2011-02-01 76 views
0

我想通過PHP在Facebook圖形API的幫助下更新FAN-PAGE的狀態。谷歌說:不起作用。FACEBOOK GRAPH/rest api:如何登錄我自己的用戶以使用PHP更新我的狀態

現在我想通過PHP更新我自己的用戶狀態。我的主要問題是如何在不使用瀏覽器和沒有有趣的PHP解決方法的情況下將我自己的用戶登錄到圖形API(使用PHP)。

+0

「我只是想更新FAN-PAGE的** **狀態」與「更新* *我的狀態**「是吧? – zerkms 2011-02-01 09:34:14

+0

我有一個主要的Facebook(用戶)頁面和一個自己的粉絲頁面,在用戶帳戶 – alex 2011-02-01 09:55:12

+0

@alex:所以?你想要發佈到哪個頁面? – zerkms 2011-02-01 10:09:16

回答

1

我的主要問題是如何登錄我自己的 用戶使用圖表api(使用php), 不使用瀏覽器,也不使用 有趣的PHP解決方法。

沒有讓你無需通過瀏覽器與他互動至少一次,以獲得offline_access代表用戶(甚至是你自己的用戶)的行爲方式

如何獲得offline_access權限以及如何從此處使用它在此answer中解釋。

編輯:
請閱讀評論!謝謝@zerkms!

1

你需要幾件事情來更新Facebook個人資料或頁面的飼料:一個Facebook應用程序(CLIENT_IDclient_secret),PROFILE_ID,並的access_token(publish_stream,manage_pages,offline_access權限)

您需要offline_access,因爲如果不是,則訪問令牌將過期。如果您已經閱讀過,如果您已經指定了publish_stream,則不需要offline_access,這只是意味着您不需要它。

要發佈一個帖子很簡單:

$data = array(
    'access_token' => $access_token, 
    'message' => 'status message', 
    ); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/{$profile_id}/feed"); 

現在如何得到PROFILE_ID的access_token,你可以使用我的應用程序post panda,或使自己的腳本。我會在這裏包含它:

# arvin castro 
# http://codecri.me/ 
# January 16, 2011 

$client_id  = ''; # application id 
$client_secret = ''; # application secret 
$callbackURL = 'http://'; # the URL of this script 
$extendedPermissions = 'publish_stream,manage_pages,offline_access'; 

session_name('facebookoauth'); 
session_start(); 

if(isset($_GET['logout']) and $_SESSION['loggedin']) { 
    $_SESSION = array(); 
    session_destroy(); 
} 

if(isset($_GET['signin'])) { 

    # STEP 1: Redirect user to Facebook, to grant permission for our application 
    $url = 'https://graph.facebook.com/oauth/authorize?' . xhttp::toQueryString(array(
     'client_id' => $client_id, 
     'redirect_uri' => $callbackURL, 
     'scope'  => $extendedPermissions, 
    )); 
    header("Location: $url", 303); 
    die(); 
} 

if(isset($_GET['code'])) { 

    # STEP 2: Exchange the code that we have for an access token 
    $data = array(); 
    $data['get'] = array(
     'client_id'  => $client_id, 
     'client_secret' => $client_secret, 
     'code'  => $_GET['code'], 
     'redirect_uri' => $callbackURL, 
     ); 

    $response = xhttp::fetch('https://graph.facebook.com/oauth/access_token', $data); 

    if($response['successful']) { 

     $var = xhttp::toQueryArray($response['body']); 
     $_SESSION['access_token'] = $var['access_token']; 
     $_SESSION['loggedin']  = true; 

    } else { 
     print_r($response['body']); 
    } 
} 

if($_SESSION['loggedin']) { 
    // Get Profile ID 
    $data = array(); 
    $data['get'] = array(
      'access_token' => $_SESSION['access_token'], 
      'fields' => 'id,name,accounts', 
      ); 
    $response = xhttp::fetch('https://graph.facebook.com/me', $data); 
    echo '<pre>'; 
    print_r(json_decode($response['body'], true)); 
    echo '</pre>'; 

} else { 
    echo '<a href="?signin">Sign in with Facebook</a>'; 
} 

?> 

我用我的捲曲包裝類,xhttp

相關問題