oauth常见问题我要提意见

OAuth模块管理客户端的用户登录授权验证功能,允许应用访问第三方平台的资源。

说明:

OAuth接口支持Web开发者获取终端安装的第三方平台软件(如微信、微博等)环境,调用第三方平台软件的授权页面进行登录授权验证操作。若终端安装了对应的社交客户端环境,则调用客户端的授权界面,否则调用WAP页面进行登录授权验证。

方法:

对象:

回调方法:

权限:

permissions


{
// ...
"permissions":{
	// ...
	"OAuth": {
		"description": "登录鉴权"
	}
}
}
			

getServices

获取登录授权认证服务列表


void plus.oauth.getServices( successCB, errorCB );
				

说明:

获取终端支持的权登录认证服务列表,可用于提示用户进行登录平台的选择。获取登录授权认证服务成功后通过successCB回调返回支持的所有服务列表,获取服务失败则通过errorCB回调返回失败信息。

参数:

返回值:

void : 无

示例:


// 微信授权登录对象
var aweixin=null;
// 当前环境支持的所有授权登录对象
var auths = null;

// 获取登录授权认证服务列表,单独保存微信登录授权对象
// 5+APP在plusready事件中调用,uni-app在vue页面的onLoad中调用
function getService(){
	plus.oauth.getServices(function(services){
		auths = services;
		aweixin = services['weixin'];
	}, function(e){
		plus.nativeUI.alert("获取登录授权服务列表失败:"+JSON.stringify(e));
	} );
}

				

uni-app使用plus注意事项

AuthService

登录授权认证服务对象


interface plus.oauth.AuthService {
	// Attributes
	attribute String id;
	attribute String description;
	attribute AuthInfo authResult;
	attribute UserInfo userInfo;
	attribute JSON extra;
	
	// Methods 
	function void author(successCallback, errorCallback, options);
	function void login(successCallback, errorCallback, options);
	function void logout(successCallback, errorCallback);
	function void getUserInfo(successCallback, errorCallback);
	function void addPhoneNumber(successCallback, errorCallback);
}
				

说明:

AuthService对象用于表示登录授权认证服务,在JS中为对象,用于向系统进行登录授权认证操作。

属性:

方法:

id

登录授权认证服务标识

说明:

String 类型 只读属性

用于表示登录授权认证服务标识: "weixin" - 表示微信登录授权; "qq" - 表示QQ登录授权; "sinaweibo" - 表示新浪微博登录授权; "xiaomi" - 表示小米登录授权; "qihoo" - 表示360账号登录(仅360手助流应用环境下支持)。

description

登录授权认证服务描述

说明:

String 类型 只读属性 可选属性

用于描述登录授权认证服务的信息: "微信" - 表示微信登录授权; "QQ" - 表示QQ登录授权; "新浪微博" - 表示新浪微博登录授权; "小米" - 表示小米登录授权; "360账号" - 表示360账号登录(仅360手助流应用环境下支持)。

authResult

登录认证数据

说明:

AuthInfo 类型 只读属性 可选属性

调用login登录认证成功后保存的认证信息。 如果值为"undefined"则表示未进行登录认证或者登录认证失败。

userInfo

登录用户信息

说明:

UserInfo 类型 只读属性 可选属性

调用用于保存登录授权认证获取的用户信息,如果值为"undefined"则表示未获取过用户信息。

extra

登录授权认证扩展信息

说明:

JSON 类型 只读属性 可选属性

用于保存登录授权认证服务返回的扩展信息,具体内容由各登录平台决定,如果没有扩展信息则为undefined。 例如“微信”,则可保存以下数据: state - 用于保持请求和回调的状态参数。

authorize

请求授权认证


						
void obj.authorize(successCallback, errorCallback, options);
						
						

说明:

向开放平台请求进行授权认证,需提供授权域(scope),用户在终端确认后通过成功回调返回授权临时票据(code)。 开发者可以将授权临时票据(code)提交到业务服务器,由业务服务器从微信开放平台获取授权登录等相关信息,避免将appsecret等信息保存在客户端可能引起泄露的问题。 注意:目前仅微信平台支持请求授权认证,其它平台调用此方法将返回错误回调。

参数:

返回值:

void : 无

示例:


// 微信授权登录对象
var aweixin=null;	// 调用plus.oauth.getServices获取保存

// 获取微信登录授权对象后可进行授权操作
function authorize(){
	if(!aweixin){
		plus.nativeUI.alert("当前环境不支持微信登录");
		return;
	}
	aweixin.authorize(function(e){
		plus.nativeUI.alert("授权成功:"+JSON.stringify(e));
	}, function(e){
		plus.nativeUI.alert("授权失败:"+JSON.stringify(e));
	}, {scope:'snsapi_userinfo',state:'authorize test',appid:'WX**********'});
}
						

uni-app使用plus注意事项

login

请求登录认证


						
void obj.login(successCallback, errorCallback, options);
						
						

说明:

在登录前可通过对象的authResult属性判断是否已经登录认证过,通常只需对没有登录认证过的服务进行此操作。 登录后可获取应用的基础信息(如用户昵称等)保存在authResult属性中。 登录操作成功后通过successCallback回调函数通知,失败则通过errorCallback回调函数通知。

参数:

返回值:

void : 无

示例:


// 微信授权登录对象
var aweixin=null;	// 调用plus.oauth.getServices获取保存

// 通常登录前需要先调用authorize方法进行授权

// 获取微信登录授权对象后可进行登录认证操作
function authLogin(){
	if(!aweixin){
		plus.nativeUI.alert("当前环境不支持微信登录");
		return;
	}
	if(!aweixin.authResult){
		aweixin.login(function(e){
			plus.nativeUI.alert("登录认证成功!");
		}, function(e){
			plus.nativeUI.alert("登录认证失败: "+JSON.stringify(e));
		} );
	}else{
		plus.nativeUI.alert("已经登录认证!");
	}
}
						

uni-app使用plus注意事项

logout

注销登录认证


void obj.logout(successCallback, errorCallback);
						

说明:

注销登录认证后,再次获取用户信息时需重新进行授权登录认证操作。 如果第三方平台不需要注销登录操作,则清空保存的登录认证等信息。

参数:

返回值:

void : 无

示例:


// 微信授权登录对象
var aweixin=null;	// 调用plus.oauth.getServices获取保存

// 调用authorize、login先授权登录认证

// 注销登录认证
function authLogout(){
	if(!aweixin){
		plus.nativeUI.alert("当前环境不支持微信登录");
		return;
	}
	aweixin.logout(function(e){
		plus.nativeUI.alert("注销登录认证成功!");
	}, function(e){
		plus.nativeUI.alert("注销登录认证失败: "+JSON.stringify(e));
	});
}
						

uni-app使用plus注意事项

getUserInfo

获取用户信息


void obj.getUserInfo(successCallback, errorCallback);
						

说明:

在获取用户信息前可通过对象的userInfo属性判断是否已经获取过,通常只需对没有获取过用户信息的服务进行此操作。 获取用户信息成功后通过successCallback回调函数通知,失败则通过errorCallback回调函数通知。

参数:

返回值:

void : 无

示例:


// 微信授权登录对象
var aweixin=null;	// 调用plus.oauth.getServices获取保存

// 通常登录前需要先调用authorize方法进行授权,调用login方法进行登录认证

// 获取微信登录授权对象后获取用户信息操作
function authUserInfo(){
	if(!aweixin){
		plus.nativeUI.alert("当前环境不支持微信登录");
		return;
	}
	if(aweixin.authResult){
		aweixin.getUserInfo( function(e){
			plus.nativeUI.alert("获取用户信息成功:"+JSON.stringify(aweixin.userInfo));
		}, function(e){
			plus.nativeUI.alert("获取用户信息失败: "+JSON.stringify(e));
		} );
	}else{
		plus.nativeUI.alert("未登录认证!");
	}
}
						

uni-app使用plus注意事项

AuthOptions

JSON对象,授权认证参数选项


interface plus.oauth.AuthOptions {
	attribute String scope;
	attribute String state;
	attribute String appid;
	attribute String appkey;
	attribute String appsecret;
	attribute String redirect_uri;
}
				

说明:

此对象支持的属性值由登录授权认证服务定义。 例如“微信”,则可配置以下参数: scope - 应用授权作用域; state - 用于保持请求和回调的状态参数。

属性:

示例:


// 微信授权登录对象
var aweixin=null;	// 调用plus.oauth.getServices获取保存

// 获取微信登录授权对象后可进行授权操作
function authorize(){
	if(!aweixin){
		plus.nativeUI.alert("当前环境不支持微信登录");
		return;
	}
	aweixin.authorize(function(e){
		plus.nativeUI.alert("授权成功:"+JSON.stringify(e));
	}, function(e){
		plus.nativeUI.alert("授权失败:"+JSON.stringify(e));
	}, {scope:'snsapi_userinfo',appid:'WX**********'});
}
				

uni-app使用plus注意事项

AuthInfo

登录授权认证信息


interface plus.oauth.AuthInfo {
	attribute String openid;
	attribute String access_token;
	attribute String expires_in:
	attribute String refresh_token;
	attribute String scope;
}
				

说明:

此对象仅定义标准属性,登录授权认证服务可扩展自定义数据。 例如“微信”登录授权服务,则包括以下数据: unionid - 用户统一标识,针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。

属性:

UserInfo

登录授权用户信息


interface plus.oauth.UserInfo {
	attribute String openid;
	attribute String headimgurl:
	attribute String nickname;
	attribute String email;
	attribute String phonenumber;
	attribute String sex;
	attribute String province;
	attribute String city;
	attribute String country;
}
				

说明:

用于保存登录授权用户的信息。 此对象仅定义标准属性,登录授权认证服务可扩展自定义数据。 例如“微信”登录授权服务,可能包括以下自定义数据: privilege - 用户特权信息,json数组,如微信沃卡用户为(chinaunicom); unionid - 用户统一标识,针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。

属性:

ServicesSuccessCallback

获取登录授权认证服务成功回调


void ServicesSuccessCallback( services ) {
	// Get oauth services success code
}
				

说明:

当获取登录授权认证服务列表成功时触发,并通过services参数返回运行环境支持的登录授权认证服务列表。

参数:

返回值:

void : 无

AuthorizeSuccessCallback

授权认证成功回调函数


void onAuthorizeSuccess(event){
	  // authorize code
}
				

说明:

授权认证成功时触发,并返回操作结果。

参数:

返回值:

void : 无

LogoutSuccessCallback

注销登录授权认证操作成功回调函数


void onLogoutSuccess(event){
	  // logout code
}
				

说明:

注销登录授权认证成功时触发,并返回操作结果。

参数:

返回值:

void : 无

SuccessCallback

登录授权认证服务操作成功回调函数


void onSuccess(event){
	  // auth code
}
				

说明:

登录授权认证服务操作如请求登录授权认证、获取登录授权用户信息成功时触发,并返回操作结果。

参数:

返回值:

void : 无

ErrorCallback

登录授权认证服务操作失败回调函数


void onError(error){
	// Error code
}
				

说明:

登录授权认证服务操作如请求登录授权认证、注销登录授权认证、获取登录授权用户信息失败时触发,并返回错误信息。

参数:

返回值:

void : 无