跳转到主要内容
PRODUCT DOCUMENTS

快速找到所需文档,高效完成接入与排障

浏览产品文档与友盟 Skill,展开目录并阅读正文。

授权登录设置

目前支持第三方授权登录的平台包括:

  • 国内平台:

    微信、新浪微博、QQ、企业微信、抖音、荣耀

  • 国外平台:Facebook、Twitter、linkedIn、kakao、VKontakte、Dropbox用户进行第三方平台授权登录时,平台提供了获取用户资料的授权接口,使用该接口可以获取该三方平台返回的所有资料(包括姓名,性别,头像等)

获取用户资料接口

获取用户资料可以使用如下接口:

mShareAPI.getPlatformInfo(UserinfoActivity.this, SHARE_MEDIA.SINA, umAuthListener);

SHARE_MEDIA.SINA是指新浪平台,更多社交平台的枚举变量具体指请参考文档

其中umAuthListener为授权回调,构建如下:

UMAuthListener authListener = new UMAuthListener() {
        /**
         * @desc 授权开始的回调
         * @param platform 平台名称
         */
        @Override
        public void onStart(SHARE_MEDIA platform) {

        }

        /**
         * @desc 授权成功的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         * @param data 用户资料返回
         */
        @Override
        public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {

            Toast.makeText(mContext, "成功了", Toast.LENGTH_LONG).show();

       }

        /**
         * @desc 授权失败的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         * @param t 错误原因
         */
        @Override
       public void onError(SHARE_MEDIA platform, int action, Throwable t) {

           Toast.makeText(mContext, "失败:" + t.getMessage(),                                     Toast.LENGTH_LONG).show();
        }

        /**
         * @desc 授权取消的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         */
        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {
            Toast.makeText(mContext, "取消了", Toast.LENGTH_LONG).show();
        }
    };

注:微信授权支持本地授权(本地设置appSecret)或通过服务器授权(在服务器配置appSecret)。服务器配置微信的appSecret具体操作参照以下文档:https://developer.umeng.com/docs/143070/detail/143586如果应用程序设置了微信的appSecret,则优先使用本地授权。如果应用程序设置微信的appSecret为空字符串””,并且在服务器端配置了微信的appSecret,则使用远程服务器授权。

说明

如您使用了U-Share的授权登录功能,欢迎尝试使用友盟+智能认证的一键登录功能。一键登录搭配授权登录,登录方式用户可选,一秒认证体验升级,优化注册率和登录率。

U-Share封装字段含义

用户授权登录成功后,第三方平台会将用户资料传回, 全部会在Map data中返回 ,由于各个平台对于用户资料的标识不同,因此为了便于开发者使用,我们将一些常用的字段做了统一封装,开发者可以直接获取,不再需要对不同平台的不同字段名做转换,这里列出我们部分平台封装的字段及含义。

UShare封装后字段名

QQ原始字段名

微信原始字段名

新浪原始字段名

字段含义

备注

uid

openid

openid

id

用户唯一标识

uid能否实现Android与iOS平台打通,目前QQ只能实现同APPID下用户ID匹配

name

screen_name

nickname

screen_name

用户昵称

无

iconurl

profile_image_url

headimgurl

profile_image_url

用户头像

无

说明

相关阅读:授权失败相关问题【SQ10003】QQ的unionID为空

各平台用户信息解析

在返回的map中部分平台返回的用户信息对应的key值如下

微信

微信返回的openID和unionID都可以实现用户标识的需求,二者的区别在于,unionID可以实现同一个开发者账号下的应用之间账号打通的需求

openid:uid

unionid:unionid

accesstoken: accessToken (6.2以前用access_token)

refreshtoken: refreshtoken: (6.2以前用refresh_token)

过期时间:expiration (6.2以前用expires_in)

name:name(6.2以前用screen_name)

城市:city

省份:province

国家:country

头像:iconurl(6.2以前用profile_image_url)

QQ

QQ目前uid暂时无法实现多个应用间打通操作,如需打通请使用unionID字段,该字段需要向QQ平台申请name:name(6.2以前用screen_name)

用户id(openid):uid

accesstoken: accessToken (6.2以前用access_token)

过期时间:expiration (6.2以前用expires_in)

性别:gender头像:iconurl(6.2以前用profile_image_url)

是否黄钻:is_yellow_year_vip黄钻等级:yellow_vip_level

城市:city

省份:province

新浪微博

用户id:uidaccesstoken: accessToken (6.2以前用access_token)

refreshtoken: (6.2以前用refresh_token)

过期时间:expiration (6.2以前用expires_in)

用户名:name(6.2以前用screen_name)

位置:location

头像:iconurl(6.2以前用profile_image_url)

性别:gender

关注数:followers_count

好友数:friends_count

企业微信

企业微信仅支持返回userId一个字段。userId:userId

抖音

open_id

union_id

头像:avatar

国家:country

城市:city

性别:gender

账号名称:nickname

手机号:encrypt_mobile(注:此字段需要在抖音开放平台申请权限,否则不能获取。并且返回的手机号是加密的,开发者可以调取以下解密接口获取原文手机号)

UMDYUtils.decryptMobileNumber(String encryptedMobileNumber);

荣耀

用户标识:openID

头像:headPictureURL

昵称:displayName

地区编码:nationalCode

手机号:mobileNumber(注:此字段需要在荣耀开放平台申请权限,否则不能获取。并且返回的手机号是加密的,开发者可以调取以下解密接口获取原文手机号)

UMHonorUtils.decryptMobileNumber(String encryptedMobileNumber);

facebook

用户id:uid(6.2以前用id)first_name:first_namelast_name:last_namemiddle_name:middle_namename:namelinkUri:linkUri头像:iconurl(6.2以前用profilePictureUri)

领英

名:firstName姓:lastName头像:iconurl(6.2以前用profile_image_url)名字:name(6.2以前用screen_name)头衔:headline国家代码:location_country_codeuid:uid所在地:location_name

授权登录高级功能

删除授权

对于退出登录,想要删除授权的用户可以使用如下接口:

UMShareAPI.get(mContext).deleteOauth(Activity, Platform, authListener);

其中第一个参数为Context,第二个参数为平台,第三个参数为删除授权的回调。

判断客户端安装

如想判断出客户端是否安装,使用如下接口

mShareAPI.isInstall(this, SHARE_MEDIA.WEIXIN)

设置每次登录拉取确认界面

UMShareConfig config = new UMShareConfig();
config.isNeedAuthOnGetUserInfo(true);
UMShareAPI.get(InfoDetailActivity.this).setShareConfig(config);

目前SDK默认设置为在Token有效期内登录不进行二次授权,如果有需要每次登录都弹出授权页面,便于切换账号的开发者可以添加上述代码