如何在使用FB登录/注册用户时要求电子邮件权限



我似乎不能把电子邮件设置为需要权限。

如果用户在FB登录时不勾选电子邮件,我的代码就会崩溃。当我尝试围绕这个问题编写代码时(尝试提醒用户接受电子邮件许可的必要条件),它不会工作;用户必须在他们的FB设置中手动撤销应用程序的访问权限,这显然是不可能的。

那么我如何才能使电子邮件权限要求作为我的应用程序/网站的一部分?

老实说,看完整个Facebook API文档我都要挠头了。

这是我目前的内容:

    var $user = null;
    function __construct()
    {
           //blahblahlblah
           //blahblahblah (Code needed for facebook login to work)
           $this->user = $this->facebook->getUser();
           if ($this->user)
           {
              try
              {
                 // Proceed knowing you have a logged in user
                 $this->user = $this->facebook->api('/me');
                 $this->logoutUrl = $this->facebook->getLogoutUrl( array('next' => base_url() . 'connect/logout') );
              }
              catch (FacebookApiException $e)
              {
                 error_log($e);
                 $this->user = null;
              }
           }
    }
    function process()
    {
        // If the Facebook user allows his/her email to be shared.
        // [If they don't, skip to the `else` statement below]
        if (isset($this->user['email']))
        {
            //Great! I can process normally
        }
        // If the Facebook user doesn't share their email.
        else
        {
            //What do I do here?
            //I'm not sure how the OAuth works, so that's why im checking
            echo 'email is required. line 86 , connect.php controller';
        }
    }

在继续应用程序逻辑之前,您应该检查收到的访问令牌。如何做到这一点在这里描述:

https://developers.facebook.com/docs/facebook-login/permissions/v2.0检查

如果你意识到用户没有给email权限,你可以重新发送他到权限对话框,如下所示:

https://developers.facebook.com/docs/facebook-login/permissions/v2.0处理

:

如果有人拒绝了你的应用程序的权限,登录对话框不会让你的应用重新请求权限,除非你通过了auth_type=rerequest随您的要求而行。

使用facebook PHP sdk

require_once 'facebook-sdk/facebook.php';
$config = array (
        'appId' => 'your id',
        'secret' => 'your secret',
        'fileUpload' => false,
        'allowSignedRequest' => false
);
$facebook = new Facebook ( $config );
$fb_user_id = $facebook->getUser ();
$fb_params = array (
        'scope' => 'email, publish_stream'
);

并为您的用户生成登录url

if (empty ( $fb_user_id )) {
    $fb_login_url = $facebook->getLoginUrl ( $fb_params );
}

最新更新