2011-02-01 15 views
0

FacebookのグラフAPIの助けを借りて、PHPによるファンページの状態を更新したいと思います。 Googleは言う:動作しません。FACEBOOK GRAPH/rest api:PHPで自分のSTATUSを更新するにはどうすればいいですか

今、自分のユーザーステータスをPHPで更新したいと考えています。私の主な問題は、ブラウザを使用せず面白いPHPの回避策なしで自分自身のユーザーをグラフapiに(PHPで)ログインする方法です。あなただけのグラフAPIのポストでステータスを更新することができた後http://developers.facebook.com/docs/authentication

:あなたはこれがFB.login()

詳しい情報を行うことができますhttp://developers.facebook.com/docs/authentication/permissions

publish_stream許可を取得する必要があり、両方のケースで

+0

を私のcURLのラッパークラスを使用しています* *私の状態** "ハァッ? – zerkms

+0

私はユーザーアカウントでメインのfacebook(user)ページと独自のファンページを持っています – alex

+0

@alex:so?ページを公開したいのですか? – zerkms

答えて

1
+0

とFB.loginによるログインは無制限ですか? – alex

+0

@alex:私が与えたリンクを読んだことはありますか? 'publish_stream \tあなたのアプリケーションがコンテンツ、コメント、お気に入りをユーザーのストリームやユーザーの友人のストリームに投稿できるようにします。この権限では、オフラインアクセスを必要とせずに、いつでもユーザーのフィードにコンテンツを公開できます。ただし、Facebookはユーザーが開始した共有モデルを推奨しています。許可は無制限です。トークンは短期間のものです。しかし、いつでも新しいものを取得することができます。 – zerkms

+0

"でも、いつでも新しいものを取り出せる" - PHPのやり方は? – alex

1

私の主な問題は、自分でログインする方法です。ブラウザを使わずに、 面白いPHPの回避策を使用してグラフapi(PHPで)、 にユーザー。

あなたがoffline_accessを得るために少なくとも一度ブラウザを介して、彼と対話することなく、ユーザー(でも独自のユーザー)に代わって動作するための手立てありません。

offline_accessのアクセス権の取得方法とその使用方法については、answerで説明しています。

編集:
コメントをお読みください!ありがとう@ゼルクムズ!

+0

方法があります。それは私の答えです。 "offline_accessであってもあなたの壁に投稿するにはまだpublish_streamが必要です"これは間違っています。私は 'offline_access'なしで' publish_stream' **を使用します。 – zerkms

+0

@zerkms:その答えに関する質問と全体的な議論を読んでください。**ユーザー**は毎回自分のためにログインするようにユーザーに再度質問します**これはあなたが必要とする理由です* *そのための 'offline_access'。彼はブラウザを使いたくないので、ここでもそうだと思います! – ifaour

+0

@ifaour:はい、私はそれを知っています。しかし**ブラウザとユーザーとのやりとりなしに**公開するには、 'offline_access'は必要ありません。私のアプリケーションは、 'publish_stream'だけが許可された状態で動作します。何を逃してしまったのですか? ;-)) – zerkms

1

は、あなたのFacebookのプロフィールやページのフィードを更新するには、いくつかのことを必要とする:Facebookアプリケーション(のclient_idclient_secret)、を説明profile_id、および access_tokenは(publish_stream、manage_pages、offline_access許可)

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"); 

今すぐ取得する方法 access_tokenは
を説明profile_id、あなたは私のアプリ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>'; 
} 

?> 

私が更新する」対「**私はFAN-PAGEの**ステータスを更新したかった」、xhttp

+0

または( '[email protected]'、 'ステータスメッセージ'、 ''); – Arvin

関連する問題