2012-04-13 5 views
0

友人のデータをローカルデータベースにインポートするアプリをビルドしていますが、うまくいきます。cronからユーザープロフィールにアクセスする

毎日のcronによって実行されるスクリプトを作成しようとしています。このスクリプトは、ローカルデータベースのユーザープロファイルを反復して、友人データを更新します。

私はPHP SDKを使用しています。

私はdepreacte_offline_accessフラグを有効にしました。

これは、アクセストークンが60日以内に自動的に期限切れになることを意味しますか、それとも何か他のことをする必要がありますか?

ユーザーが同じブラウザでアプリまたはFacebookからサインアウトすると、引き続きcronスクリプトからプロファイルデータを取得できますか?

私は私が行うために必要なすべてをしてアクセストークンをretriveであることを考えるに修正午前:その後、データベースに格納し、その後でアクセストークンを設定

$access_token = $facebook->getAccessToken(); 

$facebook->setAccessToken($new_access_token); 

次にプロファイルを再測定します

また、アクセストークンの有効期限を確認するにはどうすればよいですか?

以下は、プロファイルを反復して取得するスクリプトですが、ブラウザで実行すると、現在ログインしているユーザーのみが動作するか、「OAuthException:アクセストークンの検証中にエラーが発生します。ユーザーがログアウトし。」

<?php 
require_once(THEME_INCLUDES_PATH . 'facebook.php'); 

$config = array(); 
$config['appId'] = APP_ID; 
$config['secret'] = APP_SECRET; 
$config['fileUpload'] = false; // optional 

$facebook = new Facebook($config); 

$sql = "SELECT `access_token` FROM `fb_user`"; 
$result = $db1->db_query($sql); 

while($details = $db1->db_fetch_array($result)){ 

    if($details['access_token']){ 

     $facebook->setAccessToken($details['access_token']); 
     $fb_user = $facebook->getUser('/me'); 

     if($fb_user){ 

      try { 
       $fb_profile = $facebook->api('/me');   
       print_r($fb_profile); 
      } 

      catch (FacebookApiException $e){ 
       echo $e; 
       $fb_user = false; 
      } 
     } 
    } 
} 
?> 

答えて

0

あなたは今offline_accessは廃止しまったことを望むものを行うための方法がありません。

ユーザーがアプリケーションと実際にやりとりしたときにアプリがユーザーデータにアクセスできるという考えがあります。 アクセストークンは約60日間有効です(取得方法によって異なります)が、ユーザーがアプリを削除したり、パスワードを変更したりするなどの理由で無効になることがあります。

有効期限が到来すると、もちろん新しいトークンを取得するためには何もできません。ユーザーがあなたのアプリを再エンゲージしてから新しいトークンを取得するか、 。

ユーザーが実際にあなたのアプリとやりとりするときに、すべてのデータを更新する必要があります。 official post about the deprecation of the offline_access

それは言う:

あなたは再びサーバー側のOAuthの 電話をかけることができるように 有効な「認証コード」を取得することができます前に、ユーザーがアプリケーションにアクセスする必要があります。 Appsは、 「認証コード」が短期間で有効期限が切れているため、 が期限切れ時間を自動的に延長しようとするバックグラウンド/ cronジョブをセットアップできません。


編集

公式ポスト:Removal of offline_access Permissionは2例1で、有効なアクセストークンを拡張する新しいエンドポイントを説明します。アプリがclient-side flowまたは署名要求にトークンを取得した場合:

以下の新しいエンドポイントを使用すると、既存の有効なaccess_tokenの有効期限を まで延長できます。 access_tokenが最初にクライアント側のOAuth呼び出しか によってsigned_requestによって生成された場合、エンドポイントは実際には新しい access_tokenを返します。

また、と述べている:access_tokenは、サーバー側のOAuthコールから生成されている場合は、 結果access_tokenは、より長い有効期限を持つことになります

だから私のアドバイスは、アクセストークンを生成するserver-side flowを使用することは簡単です。トークン無効イベントのリストについては

、彼らは完全なリストを持っていませんが、同じページでそれについての情報を見つけることができます。

アンインストール期限切れのトークン、ユーザーパスワードの変更を、取扱

あなたのアプリがoffline_access許可を要求した場合のアプリケーション、および ユーザーのログアウト

はかかわらず、アプリの は優雅 ユーザーは、自分のパスワードを変更するアプリを認証解除し、またはログアウト状況で、期限切れのアクセストークンを処理する必要があります。 を一様なユーザーエクスペリエンスに導く簡単なコードソリューションを含め、これらのケースに関する情報はblog postにあります。

この文書は、Handling Invalid and Expired Access Tokensで確認できます。

+0

これは基本的には正しいことですが、他の理由でトークンを無効にすることができます(私の回答で述べたように)。 –

+0

私が理解していることは、ユーザーがサイトから有効なアクセストークンを取得すると、cronスクリプトは自分のプロファイルにアクセスできますが、アクセストークンの有効期限を更新できないことです。したがって、主な問題は、offline_accessフラグを有効にすると、自動的に有効期限が60日間続くようには見えないため、何をする必要があるのか​​分かりません。もう一つは、アクセストークンが無効になる可能性のある完全に文書化されたイベントリストがないようです。 –

+0

あなたのコメントを削除しないでください。ちょうどそれを読んだ人に紛らわしいだけです。私はより多くの情報で私の答えを編集しました。 –

関連する問題