Facebook 在某些情况下不返回 OAuth 2.0 的用户数据
Facebook not returning User Data in some cases for OAuth 2.0
当我使用来自 Facebook API 的适当应用程序 ID 和应用程序机密从 Facebook 请求用户数据时,在某些情况下,它会提供所需的所有数据,如名字、姓氏、电子邮件和性别。
但是对于我的一些网站,Facebook API 没有返回任何数据,这会造成错误,客户无法通过 Facebook 登录商店。
有什么想法吗?
这是正常行为:用户在 Facebook 上授权您的应用时可以选择不泄露某些数据。您的后端需要正确处理这些情况:通过为用户选择默认数据或返回错误和重试选项(使用 auth_type 重新请求:https://developers.facebook.com/docs/facebook-login/login-flow-for-web/v2.2#re-asking-declined-permissions)
最后我发现并解决了这个问题,只需添加登录所需的字段名称即可。
我已经替换了这一行:
$client->CallAPI('https://graph.facebook.com/me', 'GET', array(), array('FailOnAccessError'=>true), $user);
用这条线
$client->CallAPI('https://graph.facebook.com/v2.4/me?fields=email,first_name,other', 'GET', array(), array('FailOnAccessError'=>true), $user);
现在我的 Facebook 登录非常有效。
要了解可以获取的其他字段,您可以访问 here。
当我使用来自 Facebook API 的适当应用程序 ID 和应用程序机密从 Facebook 请求用户数据时,在某些情况下,它会提供所需的所有数据,如名字、姓氏、电子邮件和性别。
但是对于我的一些网站,Facebook API 没有返回任何数据,这会造成错误,客户无法通过 Facebook 登录商店。
有什么想法吗?
这是正常行为:用户在 Facebook 上授权您的应用时可以选择不泄露某些数据。您的后端需要正确处理这些情况:通过为用户选择默认数据或返回错误和重试选项(使用 auth_type 重新请求:https://developers.facebook.com/docs/facebook-login/login-flow-for-web/v2.2#re-asking-declined-permissions)
最后我发现并解决了这个问题,只需添加登录所需的字段名称即可。
我已经替换了这一行:
$client->CallAPI('https://graph.facebook.com/me', 'GET', array(), array('FailOnAccessError'=>true), $user);
用这条线
$client->CallAPI('https://graph.facebook.com/v2.4/me?fields=email,first_name,other', 'GET', array(), array('FailOnAccessError'=>true), $user);
现在我的 Facebook 登录非常有效。
要了解可以获取的其他字段,您可以访问 here。