Facebook php-sdk 写入响应体
Facebook php-sdk writing in response body
我的 Facebook php-sdk-v4 有问题。
我有一个使用 Symfony2 的后端服务器和一个作为客户端的移动应用程序。
对于身份验证,我使用 FOSOAuthServerBundle.
我尝试在我的移动应用程序中使用 Facebook 登录。
为了在移动应用程序中验证用户身份,我使用 Android(或 IOS)Facebook SDK 并检索 facebook_access_token 和 facebook_userID.
我将它们发送到服务器,在那里我检查 facebook_access_token 是否使用此代码有效,其中 $socialToken
是 facebook_access_token 从移动应用程序接收,$socialId
是 facebook_userID 从移动应用程序接收:
$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;
此代码运行良好。
验证令牌后,我将请求转发到 FOSOAuthServerController 以生成访问令牌,然后 return 将此 access_token 转发到移动应用程序:
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"
}
而不是:
{
"access_token":"myAccessToken",
"expires_in":3600,
"token_type":"bearer",
"scope":null,
"refresh_token":"myRefreshToken"
}
似乎 Symfony 附加了 2 个响应正文。
但是当我通过 FOSOAuthServerBundle 控制器记录响应 return 时,它只显示第二个响应。
可能Facebook php-sdk直接写在响应体中。有没有办法在将请求转发到 FOSOAuthServerBundle 控制器之前删除响应正文的内容?
您似乎忘记了代码中某处的 var_dump($this->socialDetails);
。
我的 Facebook php-sdk-v4 有问题。
我有一个使用 Symfony2 的后端服务器和一个作为客户端的移动应用程序。
对于身份验证,我使用 FOSOAuthServerBundle.
我尝试在我的移动应用程序中使用 Facebook 登录。
为了在移动应用程序中验证用户身份,我使用 Android(或 IOS)Facebook SDK 并检索 facebook_access_token 和 facebook_userID.
我将它们发送到服务器,在那里我检查 facebook_access_token 是否使用此代码有效,其中 $socialToken
是 facebook_access_token 从移动应用程序接收,$socialId
是 facebook_userID 从移动应用程序接收:
$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;
此代码运行良好。 验证令牌后,我将请求转发到 FOSOAuthServerController 以生成访问令牌,然后 return 将此 access_token 转发到移动应用程序:
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"
}
而不是:
{
"access_token":"myAccessToken",
"expires_in":3600,
"token_type":"bearer",
"scope":null,
"refresh_token":"myRefreshToken"
}
似乎 Symfony 附加了 2 个响应正文。 但是当我通过 FOSOAuthServerBundle 控制器记录响应 return 时,它只显示第二个响应。
可能Facebook php-sdk直接写在响应体中。有没有办法在将请求转发到 FOSOAuthServerBundle 控制器之前删除响应正文的内容?
您似乎忘记了代码中某处的 var_dump($this->socialDetails);
。