我对 Facebook php-sdk-v4 有疑问 我有一个使用 Symfony2 的后端服务器和一个移动应用程序作为客户端 对于身份验证,我使用 FOSOAuthServerBundle 我尝试在我的移动应用程序中使用Facebook登录。
要在移动应用中对用户进行身份验证,我使用 Android(或IOS)Facebook SDK 并检索 facebook_access_token 和 facebook_userID
我将它们发送到服务器,在那里我检查 facebook_access_token 是否对此代码有效,其中$socialToken
是 facebook_access_token 从移动应用程序接收并{ {1}}是来自移动应用的 facebook_userID :
$socialId
此代码工作正常。 验证令牌后,我将请求转发到 FOSOAuthServerController 以生成访问令牌,并将此access_token返回到移动应用程序:
$facebook = new Facebook(array(
'app_id' => self::FACEBOOK_APP_ID,
'app_secret' => self::FACEBOOK_SECRET,
'default_graph_version' => 'v2.4',
'default_access_token' => $socialToken
));
$result = $facebook->get('/me');
$this->socialDetails = $result->getGraphUser();
if ($this->socialDetails->getId() != $socialId) {
$this->logger->info("checkFacebookAccessToken : Token is NOT valid");
return false;
}
$this->logger->info("checkFacebookAccessToken : Token is valid");
return true;
此代码也有效。 但问题是响应主体发送到移动应用程序的内容如下:
return $response = $this->get('fos_oauth_server.controller.token')->tokenAction($request);
而不是:
object(Facebook\GraphNodes\GraphUser)#616 (1) {
["items":protected]=>
array(2) {
["name"]=>
string(16) "John Doe"
["id"]=>
string(15) "123456789012345"
}
}
{
"access_token":"myAccessToken",
"expires_in":3600,
"token_type":"bearer",
"scope":null,
"refresh_token":"myRefreshToken"
}
似乎Symfony 附加了2个回复正文。 但是当我通过FOSOAuthServerBundle控制器记录响应返回时,它只显示第二个响应。
也许Facebook php-sdk直接写在响应正文中。有没有办法在将请求转发给FOSOAuthServerBundle控制器之前删除响应正文的内容?
答案 0 :(得分:2)
您的代码中似乎忘记了var_dump($this->socialDetails);
。