2015-07-28 131 views
1

我生成了一个登录URL,这很好用,但在我的情况下,电子邮件许可权是强制性的,所以我需要向用户解释并重新询问电子邮件许可权。重新询问Facebook权限PHP SDK 5.0

这里是我是如何生成的网址:

$fb = new Facebook\Facebook([ 
    'app_id' => fbappid, 
    'app_secret' => fbappsecret, 
    'default_graph_version' => 'v2.2', 
    ]); 

$helper = $fb->getRedirectLoginHelper(); 

$permissions = ['email', 'user_birthday', 'user_location', 'user_hometown', 'user_relationships']; // Optional permissions 

$loginUrl = $helper->getLoginUrl('http://localhost/urbanportal/wifilogin.php?origlink='.$_SESSION['origlink'].'&routerlink='.$_SESSION['routerlink'].'&siteid='.$_SESSION['siteid'], $permissions); 

我读了你可以通过说你正在做一个重新请求像这样第三个参数:$loginUrl = $helper->getLoginUrl('http://localhost/urbanportal/wifilogin.php?origlink='.$_SESSION['origlink'].'&routerlink='.$_SESSION['routerlink'].'&siteid='.$_SESSION['siteid'], $permissions, true);

但我m得到“param app_id的长度必须小于或等于32” Facebook错误,也许是SDK 4.0的错误?

的文件似乎总是导航我:

FB.login(
    function(response) { 
    console.log(response); 
    }, 
    { 
    scope: 'user_likes', 
    auth_type: 'rerequest' 
    } 
); 

但对于Javascript SDK ...

回答

1

就让我们来看看在SDK源代码显示,有一个专门的方法getReRequestUrl为:

/** 
* Returns the URL to send the user in order to login to Facebook with permission(s) to be re-asked. 
* 
* @param string $redirectUrl The URL Facebook should redirect users to after login. 
* @param array $scope  List of permissions to request during login. 
* @param string $separator The separator to use in http_build_query(). 
* 
* @return string 
*/ 
public function getReRequestUrl($redirectUrl, array $scope = [], $separator = '&') 

https://github.com/facebook/facebook-php-sdk-v4/blob/5.0-dev/src/Facebook/Helpers/FacebookRedirectLoginHelper.php#L202


我希望你知道,虽然你不会得到每个FB用户的电子邮件地址; f.i.他们可能不会一个在Facebook上的文件,所以即使与email权限,你不会得到一个电子邮件地址。

+0

工作,谢谢:)。不知道为什么他们不能在文档中提及...!我正在使用'filter_var($ fbemail,FILTER_VALIDATE_EMAIL)'来检查我收到的电子邮件是否是有效的电子邮件,因此没关系。 –