我正在尝试使用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参数。
答案 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
希望有所帮助。