2017-06-27 1 views
0

私はphp-graph-sdk v。5.5を使ってウェブにサインアップしているユーザーのFacebookの情報を入手しています。問題は、その上php-graph-sdkを使って正しい情報を得る方法

FacebookAuthenticationAccessToken-> getExpiresAt()

と同じような方法を使用して、トークンが有効であるかどうかを知る方法はありませんということです。これらのメソッドは、トークンが有効であっても常にnull値を返します。私はメインのFacebookFacebookクラスの - > get()メソッドを呼び出す前にトークンの妥当性をチェックしたいと思います。ティをする方法はありますか?

+0

デバッグここでは、トークン、およびそれが言うことを参照してください。https://developers.facebook.com/tools/debug/accesstoken /そして、あなたは本当にリクエストを行う前にトークンの妥当性をチェックする必要はありません...トークンが無効であるためリクエストが失敗した場合、APIはレスポンスであなたに通知します。 – CBroe

+0

問題は、私がプログラムでチェックする必要があることです。オンラインツールを使用するのではなく、これはWebserveによって行われるためです。私は - > get()メソッド呼び出しを実行してwebserviceのパフォーマンスを向上させる前にトークンの検証をしたいと思っています – mp3man

+0

私は手動でチェックするように頼んだので、あなたのコードに問題があるかどうかを確認できます。 // APIに1つのリクエストを行い、その結果が何であるかを見るのではなく、最初にトークンの妥当性をチェックしてから実際にデータを取得するリクエストをしたいと思っています。 1つではなく2つのリクエストがパフォーマンスを向上させる予定ですか? – CBroe

答えて

0

解決済み!これは、呼び出しが必要なgetExpiresAt()メソッドではありません。これは、あなたが「そうdoesnのあなたが有効なタイムスタンプに変数$ EXPIRATIONDATEを設定する必要があり、これは直接そのgetExpiresAt()戻り値である

$accessToken = new \Facebook\Authentication\AccessToken($this->accessToken, $expirationDate); 

のコンストラクタに投稿された同じ情報を取得するのみゲッターでありますアクセストークンの検証をチェックするために使用するセンスがあります。 、アクセストークンの正しい有効期限を取得するには次のようにリクエストを使用してリモート呼び出しを実行する必要があります。

try { 
    $response = $this->fb->get('/debug_token?input_token=' . $this->accessToken); 
} 
catch(\Facebook\Exceptions\FacebookResponseException $e) { 
    // When Graph returns an error 
    $this->lastError = 'FaReEx: ' . $e->getMessage(); 
    return false; 
} 
catch(\Facebook\Exceptions\FacebookSDKException $e) { 
    // When validation fails or other local issues 
    $this->lastError = 'FaSDKEx: ' . $e->getMessage(); 
    return false; 
} 

$graphObject = $response->getGraphObject(); 
return $graphObject->getProperty('expires_at'); // This is a DateTime php object 
関連する問題