ログインにクライアント側のSDKを使用し、グラフAPIを使用してトリガーされたアクションで「ウォール投稿」にサーバー側のPHP SDKを使用しています(offline_accessで使用していましたが、非推奨であることがわかりました)。
サーバー側で拡張トークンを使用できるように、クライアント側SDKを使用してサーバー側で拡張アクセストークンを取得する方法、
hereのようないくつかの答えがあることは知っていますが、サーバー側のログインを使用し、応答で取得する $_REQUEST['code'] から拡張トークンを取得します。
クライアント側のログインを使用して $_REQUEST['code'] の値を取得する方法はありますか?
アップデート:
私のクライアント ログイン コードは oAuth をサポートしています。
FB.init({
appId : 'MYAPPID', // App ID
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth : true // enable OAuth 2.0
});
FB.login(function() {
FB.api('/me', {'fields': "some coma seperated fields"},
function(response){
//Function that sends data to server
Pass_data_to_server( response );
});
}, scope:'some scope values');
サーバー側のコード:
<?php
$settings = array
(
'appId' => FB_APP_ID,
'secret' => FB_APP_SECRET,
'cookie' => true,
'oauth' => true
);
// Get facebook object from facebook sdk class
$facebook = new Facebook($settings);
if ($facebook)
{
$user_id = $facebook->getUser();
$facebook->setExtendedAccessToken(); //long-live access_token 60 days
$token = $facebook->getAccessToken();
try
{
$response = $facebook->api('me/og.like', 'POST',{ $MYCUSTOMDATA});
return $response;
}
catch (FacebookApiException $e)
{
print_r($e)
return false;
}
}
?>