基本的な問題:ユーザーが不在の場合でも、許可されたユーザーについてFacebookグラフAPIをアプリで呼び出せるようにしたい。
たとえば、ユーザー(A)にアプリを承認してもらい、後でユーザー(B)がアプリを使用してユーザー(A)の友達に関する情報を表示できるようにします。具体的には、「作業」フィールド。はい、これらの拡張アクセス許可(、、など)を要求していuser_work_history
ますfriends_work_history
。現在、私のアプリは、ログインしているユーザーの友達の作業履歴にアクセスできますが、アプリの他のユーザーの友達の作業履歴にはアクセスできません。
これが私がすでに知っていることです:
- スコープパラメータへの追加
offline_access
は古い方法であり、機能しなくなりました。 - 新しい方法は、「長寿命」のアクセストークンを使用することです。ここ。これらは60日間続きます。
新しい拡張トークンを取得するには、通常のアクセストークンを交換する必要があります。FBのドキュメントには次のように書かれています。
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
これが私が知らないことです(そしてあなたが私に教えてくれることを願っています): Facebook PHP SDKを使用して拡張(別名「長寿命」)アクセストークンを取得するにはどうすればよいですか?現在、私のコードは次のようになっています。
$facebook->getAccessToken();
このようなものはありますか?:
$facebook->getExtendedAccessToken();
そうでない場合、これは私がすべきことですか?
$accessToken = $facebook->getAccessToken();
$extendedAccessToken = file_get_contents("https://graph.facebook.com/oauth/access_token?
client_id={$appId}&
client_secret={$secret}&
grant_type=fb_exchange_token&
fb_exchange_token={$accessToken}"
);
試しましたが、うまくいきません。このエラーが発生します:
Warning: file_get_contents(https://graph.facebook.com/oauth/access_token? client_id=#######& client_secret=#########& grant_type=fb_exchange_token& fb_exchange_token=##########) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /...
グラフAPIの代わりにFQLに切り替えると、動作が異なりますか?Facebookのドキュメントを何度も読んだことがありますが、PHP sdkは完全にドキュメント化されておらず、これがどのように機能するかの例を見つけることができません。