自分のページに投稿するために有効期限が切れないアクセストークンを持つことが可能かどうか知りたいのですが
今、私はアクセストークンを取得します:
https://graph.facebook.com/me/accounts
私には許可がpublish_stream
ありますが、 Access Token Debuggerを使用すると、トークンが約1時間で期限切れになることがわかります。期限切れにならない方法はありますか?manage_pages
自分のページに投稿するために有効期限が切れないアクセストークンを持つことが可能かどうか知りたいのですが
今、私はアクセストークンを取得します:
https://graph.facebook.com/me/accounts
私には許可がpublish_stream
ありますが、 Access Token Debuggerを使用すると、トークンが約1時間で期限切れになることがわかります。期限切れにならない方法はありますか?manage_pages
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は常に有効です
お役に立てば幸い
ピートの答えを少し簡略化し、有効期限が切れていないページアクセストークンを取得する手順を追加しました。
次のURLにアクセスし、ブラウザのアドレスバー内に返されたアクセストークンをメモします。
次のURLにアクセスし、返されたデータ内で目的のページの名前を見つけて、アクセストークンをメモします。
https://graph.facebook.com/me/accounts?access_token=ACCESS_TOKEN_RETURNED_FROM_STEP_1
次のURLにアクセスし、返されたアクセストークンをメモします。
アクセストークンデバッガーを使用して、アクセストークンのプロファイルIDが目的のページのIDと一致し、有効期限が切れないことを確認します
2016年現在、これを行うためのはるかに簡単な方法があります:)
右上のドロップダウンからアプリを選択します
右側のアプリケーションドロップダウンのすぐ下にある[アクセストークンを取得]ボタンをクリックします
ドロップダウンで、のアクセストークンを取得するページを選択します。ページがリストに表示されない場合は、ページの管理者ロールが設定されていることを確認する必要があります。また、ドロップダウンで[ページアクセストークンを取得]をクリックする必要がある場合もあります。その後、次に[アクセストークンを取得]ボタンをクリックすると、ページがドロップダウンに表示されます。
「アクセストークン」入力フィールドの青い感嘆符アイコンをクリックします
ポップアップの右下にある[アクセストークンツールで開く]ボタンをクリックします
「アクセストークンの延長」ボタンをクリックして、有効期限のないトークンを取得します
この記事の元の情報:https ://www.rocketmarketinginc.com/blog/get-never-expiring-facebook-page-access-token/
さて、それは約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/に戻り ます。新しいアクセストークンを通過したら、アクセストークンフィールドに移動します。次に、[送信]をクリックします。その後、ノードで+ _ ___をクリックし、アカウントまでスクロールしてクリックします。アクセストークンが必要なページを見つけて、コピーしてアクセスキーフィールドに貼り付けます。[デバッグ]をクリックすると、有効期限が切れないことがわかります。そのトークンを保存すると、アプリのシークレットをリセットしない限り、有効なままになります。
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 ="」を追加せずに、実際のトークン値を入力します