11

自分のページに投稿するために有効期限が切れないアクセストークンを持つことが可能かどうか知りたいのですが

今、私はアクセストークンを取得します:

https://graph.facebook.com/me/accounts

私には許可がpublish_streamありますが、 Access Token Debuggerを使用すると、トークンが約1時間で期限切れになることがわかります。期限切れにならない方法はありますか?manage_pages

4

5 に答える 5

17

Facebookの開発者を参照してください:

長期間有効なユーザーアクセストークンを使用することにより、[ユーザーID] /アカウントエンドポイントをクエリすると、ユーザーが管理するページに対して有効期限が切れないページアクセストークンが提供されるようになりました。

したがって、サーバー側の呼び出しを使用して、最初の短命のトークンを長命のトークンと交換する必要があります。

https://graph.facebook.com/oauth/access_token?
client_id=APP_ID& client_secret=APP_SECRET& grant_type=fb_exchange_token& fb_exchange_token=EXISTING_ACCESS_TOKEN 

そして、その長命のトークンで私/アカウントに問い合わせます。間違いなく私たちのために機能します。つまり、デバッガーは次のように表示します。


編集-私たちのプロセス

だから、私たちがしていることは:

  • ユーザーが要求された権限を受け入れ、自分のアカウントをアプリに接続した後、「コード」を取得する、アプリを使用した最初のクライアント側認証

    https://www.facebook.com/dialog/oauth?client_id = YOUR_APP_ID&redirect_uri = YOUR_REDIRECT_URI&scope = COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES&response_type = code

  • サーバーアプリケーションでは、サーバー側の認証を使用して、アクセストークンのコードを交換します。

    https://graph.facebook.com/oauth/access_token?client_id = YOUR_APP_ID&redirect_uri = YOUR_REDIRECT_URI&client_secret = YOUR_APP_SECRET&code = CODE_GENERATED_BY_FACEBOOK

  • このaccess_tokenを使用して、上記のようにサーバー側の交換を行います

  • 今、私/アカウントをリクエストし、結果のaccess_tokenは常に有効です

お役に立てば幸い

于 2012-10-03T10:20:48.827 に答える
4

ピートの答えを少し簡略化し、有効期限が切れていないページアクセストークンを取得する手順を追加しました。

  1. 次のURLにアクセスし、ブラウザのアドレスバー内に返されたアクセストークンをメモします。

    https://www.facebook.com/dialog/oauth?client_id=APP_ID&redirect_uri=REDIRECT_URI&scope=manage_pages,publish_stream&response_type=token

  2. 次のURLにアクセスし、返されたデータ内で目的のページの名前を見つけて、アクセストークンをメモします。

    https://graph.facebook.com/me/accounts?access_token=ACCESS_TOKEN_RETURNED_FROM_STEP_1

  3. 次のURLにアクセスし、返されたアクセストークンをメモします。

    https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=PAGES_ACCESS_TOKEN_FROM_STEP_2

  4. アクセストークンデバッガーを使用して、アクセストークンのプロファイルIDが目的のページのIDと一致し、有効期限が切れないことを確認します

于 2013-06-06T17:17:20.707 に答える
2

2016年現在、これを行うためのはるかに簡単な方法があります:)


  1. https://developers.facebook.com/tools/explorerにアクセスします

  2. 右上のドロップダウンからアプリを選択します

  3. 右側のアプリケーションドロップダウンのすぐ下にある[アクセストークンを取得]ボタンをクリックします

  4. ドロップダウンで、のアクセストークンを取得するページを選択します。ページがリストに表示されない場合は、ページの管理者ロールが設定されていることを確認する必要があります。また、ドロップダウンで[ページアクセストークンを取得]をクリックする必要がある場合もあります。その後、次に[アクセストークンを取得]ボタンをクリックすると、ページがドロップダウンに表示されます。

  5. 「アクセストークン」入力フィールドの青い感嘆符アイコンをクリックします

  6. ポップアップの右下にある[アクセストークンツールで開く]ボタンをクリックします

  7. 「アクセストークンの延長」ボタンをクリックして、有効期限のないトークンを取得します


この記事の元の情報:https ://www.rocketmarketinginc.com/blog/get-never-expiring-facebook-page-access-token/

于 2016-05-23T14:51:47.310 に答える
1

さて、それは約1週間の調査を要しましたが、これが私の解決策です。https://developers.facebook.com/tools/explorer/で、access_tokenの一部としてmanage_pageがあることを確認してください。その後、このコードをアプリID、シークレット、リダイレクトとともに使用します。

<?php
   app_id = "APP_ID";
   $app_secret = "APP_SECERET";
   $post_login_url = "REDIRECT_URL";


   $code = $_REQUEST['code'];

   //Obtain the access_token with publish_stream permission 
   if(empty($code)){ 
      $dialog_url= "http://www.facebook.com/dialog/oauth?"
       . "client_id=" .  $app_id 
       . "&redirect_uri=" . urlencode( $post_login_url)
       .  "&COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES";
      echo("<script>top.location.href='" . $dialog_url 
      . "'</script>");
     }
    else {


      $token_url="https://graph.facebook.com/oauth/access_token?"
       . "client_id=" . $app_id 
       . "&redirect_uri=". urlencode($post_login_url)
       . "&client_secret=" . $app_secret
       . "&code=" . $code;
      $response = file_get_contents($token_url);
      $params = null;
      parse_str($response, $params);
      $access_token = $params['access_token'];
      echo 'access token: ' . $access_token.'<br>';

        if($access_token){


          $token_url="https://graph.facebook.com/oauth/access_token?"
       . "client_id=" . $app_id 
       . "&redirect_uri=". urlencode($post_login_url)
       . "&client_secret=" . $app_secret
       .'&grant_type=fb_exchange_token'
       . "&fb_exchange_token=" . $access_token;
       $response = file_get_contents($token_url);
       $access_token = $params['access_token'];
       echo 'new access token: '.$access_token;

        }
    }*/

?>

その後、「新しいアクセストークン」をコピーし、 https://developers.facebook.com/tools/explorer/に戻り ます。新しいアクセストークンを通過したら、アクセストークンフィールドに移動します。次に、[送信]をクリックします。その後、ノードで+ _ ___をクリックし、アカウントまでスクロールしてクリックします。アクセストークンが必要なページを見つけて、コピーしてアクセスキーフィールドに貼り付けます。[デバッグ]をクリックすると、有効期限が切れないことがわかります。そのトークンを保存すると、アプリのシークレットをリセットしない限り、有効なままになります。

于 2013-04-01T11:09:29.860 に答える
0

Facebookから次のAPIを使用して、トークンの有効期限を60日に更新できます。トークンの有効期限が近づいたときに、同じAPIを60日以内に再度呼び出して、その時点から60日に有効期限を更新します。トークンの有効期限は有効期限パラメータに存在し、その値は秒単位です

CLIENT_IDとCLIENT_SECRETを実際の値に置き換えます

https://graph.facebook.com/oauth/access_token?client_id=&client_secret =&grant_type = fb_exchange_token&fb_exchange_token =

ACCESS_TOKENに、「access_token ="」を追加せずに、実際のトークン値を入力します

于 2013-10-17T04:48:05.763 に答える