2015-07-28 173 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)'來檢查我收到的電子郵件是否是有效的電子郵件,因此沒關係。 –