【发布时间】:2018-06-07 10:01:18
【问题描述】:
我正在开展一个项目,该项目需要获取由“user_gender”范围提供的 Facebook 用户性别。目前,虽然仍在生产中,但我正在使用测试用户,并且在获取性别方面遇到了问题。
我创建的测试用户 100% 具有“user_gender”范围,这反映在 Facebook 自己的 GraphQL Explorer 中,向我显示我需要的数据,包括性别。返回的 JSON 转储如下。
Request: /me?fields=first_name,last_name,email,gender
{
"first_name": "Ullrich",
"last_name": "Brownman",
"email": "hhstlboyia_1528304269@tfbnw.net",
"gender": "male",
"id": "109073989989984"
}
到目前为止,一切都很好。当我试图从 PHP SDK,更具体地说是 LaravelFacebookSdk (https://github.com/SammyK/LaravelFacebookSdk) 中获取性别时,我的问题出现了。
下面是一些代码摘录。
$response = $fb->get('/me?fields=first_name,last_name,email,gender', $userCredentials['access_token']);
return response()->json([
'first_name' => $response->getGraphUser()->getFirstName(),
'last_name' => $response->getGraphUser()->getLastName(),
'email' => $response->getGraphUser()->getEmail(),
'fb_id' => $response->getGraphUser()->getId(),
'gender' => $response->getGraphUser()->getGender()
], StatusCode::OK);
这是返回的 JSON 的样子:
{
"first_name": "Ullrich",
"last_name": "Brownman",
"email": "hhstlboyia_1528304269@tfbnw.net",
"fb_id": "109073989989984",
"gender": null
}
确认一下,我在资源管理器和 PHP 代码中使用的访问令牌完全相同。相同的权限,相同的用户。如您所见,除了性别之外的所有内容都显示并正确。
我尝试转储“性别”字段,但没有显示任何内容。这样做$response->getGraphUser()->all() 表明没有为性别而拉任何东西,这让我认为这不是我的代码问题,更可能是配置问题。
我不确定在这个过程中到底哪里出了问题,但任何调试指针都将不胜感激。
【问题讨论】:
-
您使用 GraphQL Explorer 以哪个 Graph API 为目标? V3?由于您的软件包针对 V2.10。另请注意,该软件包已近一年没有收到更新。
-
@Loek 你成功了。我完全忽略了版本,将其设置为 V3.0 效果很好。您想将其作为解决方案发布,以便我接受它作为答案吗?
-
很高兴为您提供帮助!发布答案供参考:)
标签: php laravel facebook-graph-api facebook-php-sdk