2012-01-18 9 views
0

私は$ user = $ facebook-> getUser()を理解できません。関数(これは、ユーザーがログインしていてもNULLを返します...)私はこのコードで試しています。問題は、「アクティブなアクセストークンを使用して現在のユーザーに関する情報を照会する必要があります」ということです。 OAuthExceptionと私はログインリダイレクトコードをキャッチセクションに置く場合、それは無限のリダイレクトループになる...誰かが私を助けることができますか?Facebook PHP SDK:api( '/ me')strange behavior

ありがとうございました! :)

try { 
    $user_profile = $facebook->api('/me'); 
    $scope = 'publish_stream,user_photos'; 

    $scope_params = explode(',',$scope); 

    $permissions = $facebook->api("/me/permissions"); 

if(array_key_exists('publish_stream', $permissions['data'][0]) && array_key_exists('user_photos', $permissions['data'][0])) { 
    // facebook logic 
}else { 
    ?> 
    <!doctype html> 
     <html xmlns:fb="http://www.facebook.com/2008/fbml"> 
     <head> 
     <title>Redirect</title> 
     <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 

     <script language=javascript>window.open('<?php echo $loginUrl ?>', '_parent', '')</script> 
     </head> 
     <body> 
     Redirecting... 
     </body> 
    </html> 

     <?php 
    exit; 
     } 

}catch (FacebookApiException $e) { 
    echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>'; 
} 
+0

私は、リダイレクト(ユーザーの認証後にリダイレクトを含む)するたびに、ユーザーを認証しようとするとFacebookに問題が発生したことを覚えています。 'header( 'P3P:CP =" CAO PSA OUR "');' – Nightwolf

+0

どこにこのコードを正確に追加する必要がありますか? (私はこのヘッダー修正がIEリダイレクトループのためのものだと私は今FireFoxにいる) – VORiAND

+0

これはヘッダーなので、出力が始まる前にすべてのページにある必要があります。これにより、認証や変数の損失を防ぐことができます。 URL: $ params = array( スコープ=> 'publish_stream、user_photos'、 redirect_uri => 'http:// – Nightwolf

答えて

0

溶液を1つのindex.phpファイルに

0

グラフAPIにアクティブなアクセストークンを渡す必要があります。すべてのアクセストークンには有効期限があり、経過した後に自分自身を再認証する必要があります。あなたは、facebookのPHP SDK($facebook->getAccessToken();)にアクセストークンが存在するかどうかチェックする必要があります。それがなければ、あなた自身を再認証しようとします。 IDが役に立たない場合は、別のフレッシュフェイスブックアプリケーションを使用してみてください。 http://developers.facebook.com/docs/authentication/

PHP SDKトークンを使用せずに手動でアクセスできることは、上のリンクに詳しく説明されています。

+0

私はリダイレクトJSスクリプトをキャッチセクションに移動する場合、それはまだ無限ループに入ります...しかし、私はこれがアプリケーションを自認して、アクセス許可も求めていると思います:( – VORiAND

+0

hm ...私はそうではないと思いますが、このオンラインのソースコードをリンクすることができますか? – VORiAND

+0

申し訳ありませんが、私は以前のコメントを誤って削除しました。 あなたのコードで:{echo $ facebook-> getAccessToken(); exit(); }と出力を参照してください。 –

0

をすべてのコードを配置するループは次のように起こりました:

  1. コールAPI
  2. APIは、トークンの無効/有効期限の切れた
  3. GetLoginUrl(言います) - > redirect
  4. oauthページにリダイレクトされると、パーミッションとトークンはまだ有効であると考えられます。そう、それはあなたのアプリケーションに戻ってリダイレクト
  5. ループが発生

がトークンの有効期限が切れるまでの遅延があるか、ユーザーがアプリやOAuthのスクリプトは、実際に拾っdeauthorisesようです(バック1が進みます)変化する。

Bug Maybe?