【问题标题】:CodeIgniter Auth2 Library for Facebook Graph API : Not getting email addressFacebook Graph API 的 CodeIgniter Auth2 库:未获取电子邮件地址
【发布时间】:2015-07-27 11:46:59
【问题描述】:

我是 facebook 与 codeigniter 集成的新手。

我已经为“使用 facebook 登录”功能完成了 codeigniter oauth(0.3.1) 和 oauth2(0.3.1) 库的所有设置。

但我没有收到 fb 用户的电子邮件地址

我只从 facebook 获取姓名和 ID。

我无法解决问题。

我正在使用以下 CI 代码

 public function oauth2($providername)
{

    $key = $this->config->item('key',$providername);
    $secret = $this->config->item('secret',$providername);

    $this->load->helper('url_helper');

    $this->load->spark('oauth2/0.3.1');

    $provider = $this->oauth2->provider($providername, array(
        'id' => $key,
        'secret' => $secret,
    ));
    //var_dump($provider);


    if ( ! $this->input->get('code'))
    {  

        if($providername =='facebook'){
            $url = 'http://example.com'.$provider->redirect_uri;
            redirect($url);
        }
        // By sending no options it'll come back here
       $provider->authorize();
    }
    else
    {
        // Howzit?
      //  echo "in else";die;
        try
        { 
            $token = $provider->access($_GET['code']);
            $user = $provider->get_user_info($token);
            print_r($user);die;
            $this->saveData($providername,$token,$user);

        }

        catch (OAuth2_Exception $e)
        {
            show_error('That didnt work: '.$e);
        }

    }
}

请帮帮我。

谢谢

【问题讨论】:

    标签: php facebook codeigniter facebook-graph-api-v2.0


    【解决方案1】:

    获取用户电子邮件地址的唯一方法是请求电子邮件字段的扩展权限。用户必须允许您看到此内容,并且您无法获取用户朋友的电子邮件地址。

    http://developers.facebook.com/docs/authentication/permissions

    如果您使用 Facebook 连接,则可以通过在调用 Auth 对话框的 get 字符串中传递 scope=email 来执行此操作。

    我建议使用 SDK 而不是 file_get_contents,因为它可以更轻松地执行 Oauth 身份验证。

    【讨论】:

      【解决方案2】:

      在 Facebook Graph API v2.4(2015/7/9 发布)上,默认不包含 email 字段,但我们需要明确指定要检索的字段。

      Introducing Graph API v2.4

      下面有代码 igniter-oauth2 的解决方法。

      Facebook provider fields update #65

      我知道它已被弃用,但我在 Facebook 提供商中有一些修复 (提供者/Facebook.php)

      第 28 行。更改:$url = 'https://graph.facebook.com/me?'.http_build_query(array( 'access_token' => $token->access_token ));

      对此:$url = 'https://graph.facebook.com/me?'.http_build_query(array( 'access_token' => $token->access_token, '字段' => 'id,name,email,first_name,last_name' ));

      【讨论】:

        猜你喜欢
        • 2013-05-13
        • 1970-01-01
        • 2015-07-10
        • 1970-01-01
        • 1970-01-01
        • 2011-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多