Facebook登录

时间:2015-06-18 14:36:07

标签: php facebook facebook-graph-api oauth

我正在尝试使用Facebook的PHP SDK登录我的页面。但是,Facebook忽略了getLoginUrl()

中作为数组给出的权限
$loginUrl = $helper->getLoginUrl(
    ['publish_actions']
);

登录网址如下:

https://www.facebook.com/v2.3/dialog/oauth?client_id=206265226055767&redirect_uri=http://host.tld/remote/gateway.php&state=67096befe627aa603cb086da681626c1&sdk=php-sdk-4.0.23&scope=publish_actions

然而,Facebook仍然要求我的public_profile和我的电子邮件

  • 我有管理员权限
  • 该应用仍处于开发模式

我的问题是Facebook忽略了oauth登录对话框中的scope参数。

2 个答案:

答案 0 :(得分:3)

尝试使用此代码:

$params = array(
  'scope' => 'publish_actions',
  'redirect_uri' => 'https://www.myapp.com/post_login_page'
);

$loginUrl = $facebook->getLoginUrl($params);

不确定它是否与PHP SDK 4.x的工作方式相同,但你可以试试这个:

$scope = array('publish_actions');
$loginUrl = $helper->getLoginUrl($scope);

...来自这个主题的好评答案:Specify app scopes in php facebook sdk 4.0.0 or greater

当然你也可以这样写:

$loginUrl = $helper->getLoginUrl(array('publish_actions'));

不确定它是否对你的情况有帮助,文字数组定义肯定应该在PHP中工作......但你永远不知道;)

答案 1 :(得分:0)

不被忽视

最初,Facebook会显示一个对话框,以便用户可以批准对应用的权限,例如个人资料,电子邮件,朋友等。您遇到的内容特定于publish_actions等发布权限。

发布权限会提示第二个对话框,以便用户批准此类权限,您可以在第一个对话框中对权限请求执行操作后立即获得这些权限。

所以,别担心,不是你,而是他们。

直接来自Facebook权限文档 - https://developers.facebook.com/docs/facebook-login/permissions/v2.4#optimizing

希望有所帮助。