首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >成功认证后使用Yii2 authClient从Facebook检索范围数据

成功认证后使用Yii2 authClient从Facebook检索范围数据
EN

Stack Overflow用户
提问于 2015-11-22 05:21:10
回答 2查看 2.6K关注 0票数 1

目前正在使用Yii2框架,并使用可包含的\yiisoft\yii2-authclient OAuth抽象类。我能够通过Facebook进行连接和身份验证,但无法理解如何通过OAuth2范围配置选项访问可用的辅助数据。

相关但含糊不清(因为它没有解释范围如何适用于情况,也没有解释如何使用authClient检索数据:Login with Facebook API )。

配置

代码语言:javascript
复制
'authClientCollection' => [
    'class' => 'yii\authclient\Collection',
    'clients' => [
        'facebook' => [
            'authUrl'      => 'https://www.facebook.com/dialog/oauth',
            'class'        => 'yii\authclient\clients\Facebook',
            'clientId'     => '*****',
            'clientSecret' => '*****',
            'scope'        => [
                'email', 
                'public_profile', 
                'user_about_me', 
                'user_location', 
                'user_work_history',
            ]
        ],
    ],
],

控制器设置:

代码语言:javascript
复制
public function actions()
{
    return [
        'auth' => [
            'class'           => 'yii\authclient\AuthAction',
            'successCallback' => [$this, 'onAuthSuccess'],
        ],
    ];
}
...
/**
 * [onAuthSuccess description]
 *
 * @param  [type] $client [description]
 * @return [type]         [description]
 */
public function onAuthSuccess($client)
{
    $attributes = $client->getUserAttributes();

    echo '<pre>';
    print_r( $attributes );
    echo '</pre>';
    exit;
...

返回的对象如下:

代码语言:javascript
复制
yii\authclient\clients\Facebook Object
(
    [authUrl] => https://www.facebook.com/dialog/oauth
    [tokenUrl] => https://graph.facebook.com/oauth/access_token
    [apiBaseUrl] => https://graph.facebook.com
    [scope] => Array
        (
            [0] => email
            [1] => public_profile
            [2] => user_about_me
            [3] => user_location
            [4] => user_work_history
        )

    [attributeNames] => Array
        (
            [0] => name
            [1] => email
        )

    [version] => 2.0
    ...
)

如何访问用户的user_about_me数据?

*编辑以添加提供数据转储的控制器逻辑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-22 22:28:12

您应该使用getUserAttributes方法:

代码语言:javascript
复制
public function actions()
{
    return [
        [
            'class' => 'yii\authclient\AuthAction',
            'successCallback' => [$this, 'successCallback']
        ]
    ];
}

/**
 * @param OAuth2 $client
 */
public function successCallback($client)
{
    $attributes = $client->getUserAttributes();
    ...
}
票数 0
EN

Stack Overflow用户

发布于 2016-09-11 20:44:59

您可以通过在attributeNames中设置此值来获取以下信息

代码语言:javascript
复制
id
name
first_name
last_name
age_range
link
gender
locale
picture
timezone
updated_time
verified

在配置文件中

代码语言:javascript
复制
...
'components' => [
    ...
    'authClientCollection' => [
        'class' => 'yii\authclient\Collection',
        'clients' => [
            'facebook' => [
                'class' => 'yii\authclient\clients\Facebook',
                'authUrl' => 'https://www.facebook.com/dialog/oauth',
                'clientId' => 'YOUR APP CLIENT ID',
                'clientSecret' => 'YOUR APP CLIENT SECRET',
                'attributeNames' => [
                    'id',
                    'name',
                    'first_name',
                    'last_name',
                    'link',
                    'about',
                    'work',
                    'education',
                    'gender',
                    'email',
                    'timezone',
                    'locale',
                    'verified',
                    'updated_time',
                ],
            ],
        ],
    ],
    ...
],
...

重要环节和参考资料

https://developers.facebook.com/docs/facebook-login/permissions/v2.2

Login with Facebook API

What data can be obtained about a user who logs in with Facebook Oauth?

https://developers.facebook.com/tools/explorer/?method=GET&path=me%3Ffields%3Did%2Cname%2Cemail&version=v2.7

https://developers.facebook.com/docs/graph-api/using-graph-api/#fieldexpansion

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33851893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档