簡體   English   中英

Facebook php-sdk編寫響應正文

[英]Facebook php-sdk writing in response body

我對Facebook php-sdk-v4有問題。
我有一個使用Symfony2的后端服務器和一個移動應用程序作為客戶端。
對於身份驗證,我使用FOSOAuthServerBundle
我嘗試在移動應用程序中使用Facebook登錄。

為了在移動應用程序中對用戶進行身份驗證,我使用Android(或IOS)Facebook SDK並檢索了facebook_access_tokenfacebook_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生成訪問令牌,然后使用以下命令將此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控制器返回的響應時,它僅顯示第二個響應。

也許Facebook php-sdk直接寫在響應正文中。 在將請求轉發到FOSOAuthServerBundle控制器之前,是否可以刪除響應主體的內容?

好像您忘記了var_dump($this->socialDetails); 您代碼中的某個地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM