oauth常见问题我要提意见

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

方法:

对象:

回调方法:

权限:

permissions


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

getServices

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


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

说明:

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

参数:

返回值:

void : 无

平台支持:

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8"/>
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
	<title>OAuth Example</title>
	<script type="text/javascript">
var auths=null;
// 监听plusready事件  
document.addEventListener( "plusready", function(){
	// 扩展API加载完毕,现在可以正常调用扩展API
	plus.oauth.getServices( function(services){
		auths = services;
	}, function(e){
		alert( "获取分享服务列表失败:"+e.message+" - "+e.code );
	} );
}, false );
	</script>
	</head>
	<body>
		获取登录授权认证服务列表
	</body>
</html>
				

AuthService

登录授权认证服务对象


interface plus.oauth.AuthService {
	// Attributes
	attribute String id;
	attribute String description;
	attribute AuthInfo authResult;
	attribute UserInfo userInfo;
	attribute JSON extra;
	
	// Methods
	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" - 表示新浪微博登录授权; "qihoo" - 表示360账号登录(仅360手助流应用环境下支持)。

平台支持:

description

登录授权认证服务描述

说明:

String 类型 只读属性 可选属性

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

平台支持:

authResult

授权认证结果数据

说明:

AuthInfo 类型 只读属性 可选属性

用于保存登录授权认证获取的认证信息,如果值为"undefined"则表示未进行授权认证或者是授权认证失败。

平台支持:

userInfo

登录授权认证用户信息

说明:

UserInfo 类型 只读属性 可选属性

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

平台支持:

extra

登录授权认证扩展信息

说明:

JSON 类型 只读属性 可选属性

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

login

请求登录授权认证操作


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

说明:

对指定的登录授权认证服务进行登录认证操作,在登录前可通过对象的authResult属性判断是否已经登录认证过,通常只需要对没有进行过登录认证的服务进行登录认证操作。 授权认证操作成功后通过successCB回调函数通知,失败则通过errorCB回调函数通知。

参数:

返回值:

void : 无

平台支持:

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8"/>
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
	<title>OAuth Example</title>
	<script type="text/javascript">
var auths=null;
// 监听plusready事件  
document.addEventListener( "plusready", function(){
	// 扩展API加载完毕,现在可以正常调用扩展API
	plus.oauth.getServices( function(services){
		auths = services;
	}, function(e){
		alert( "获取分享服务列表失败:"+e.message+" - "+e.code );
	} );
}, false );
// 登录操作
function authLogin(){
	var s = auths[0];
	if ( !s.authResult ) {
		s.login( function(e){
			alert( "登录认证成功!" );
		}, function(e){
			alert( "登录认证失败!" );
		} );
	}else{
		alert( "已经登录认证!" );
	}
}
	</script>
	</head>
	<body>
		1.请求登录授权认证操作<br/>
		<button onclick="authLogin()">Login</button>
	</body>
</html>
						

logout

注销登录授权认证


void obj.logout( successCallback, errorCallback );
						

说明:

对指定的登录授权认证服务注销登录认证操作,注销授权认证后,再次操作时需重新进行登录认证操作。 如果第三方平台不需要注销操作,则情况保存的相关登录认证等信息。

参数:

返回值:

void : 无

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8"/>
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
	<title>OAuth Example</title>
	<script type="text/javascript">
var auths=null;
// 监听plusready事件  
document.addEventListener( "plusready", function(){
	// 扩展API加载完毕,现在可以正常调用扩展API
	plus.oauth.getServices( function(services){
		auths = services;
	}, function(e){
		alert( "获取分享服务列表失败:"+e.message+" - "+e.code );
	} );
}, false );
// 登录操作
function authLogin(){
	var s = auths[0];
	if ( !s.authResult ) {
		s.login( function(e){
			alert( "登录认证成功!" );
		}, function(e){
			alert( "登录认证失败!" );
		} );
	}else{
		alert( "已经登录认证!" );
	}
}
// 注销所有登录授权认证服务
function authLogout(){
	for ( var i in auths ) {
		var s = auths[i];
		if ( s.authResult ) {
			s.logout(function(e){
				alert( "注销登录认证成功!" );
			}, function(e){
				alert( "注销登录认证失败!" );
			});
		}
	}
}
	</script>
	</head>
	<body>
		1.请求登录授权认证操作<br/>
		<button onclick="authLogin()">Login</button>
		2.请求登录授权认证操作<br/>
		<button onclick="authLogout()">Logout</button>
	</body>
</html>
						

getUserInfo

获取登录授权用户信息


void obj.getUserInfo( successCallback, errorCallback );
						

说明:

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

参数:

返回值:

void : 无

平台支持:

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8"/>
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
	<title>OAuth Example</title>
	<script type="text/javascript">
var auths=null;
// 监听plusready事件  
document.addEventListener( "plusready", function(){
	// 扩展API加载完毕,现在可以正常调用扩展API
	plus.oauth.getServices( function(services){
		auths = services;
	}, function(e){
		alert( "获取分享服务列表失败:"+e.message+" - "+e.code );
	} );
}, false );
// 登录操作
function authLogin(){
	var s = auths[0];
	if ( !s.authResult ) {
		s.login( function(e){
			alert( "登录认证成功!" );
		}, function(e){
			alert( "登录认证失败!" );
		} );
	}else{
		alert( "已经登录认证!" );
	}
}
// 获取登录用户信息操作
function authUserInfo(){
	var s = auths[0];
	if ( !s.authResult ) {
		alert("未登录授权!");
	} else {
		s.getUserInfo( function(e){
			alert( "获取用户信息成功:"+JSON.stringify(s.userInfo) );
		}, function(e){
			alert( "获取用户信息失败:"+e.message+" - "+e.code );
		} );
	}
}
	</script>
	</head>
	<body>
		1.请求登录授权认证操作<br/>
		<button onclick="authLogin()">Login</button>
		2. 获取登录授权用户信息<br/>
		<button onclick="authUserInfo()">UserInfo</button>
	</body>
</html>
						

addPhoneNumber

添加用户手机号信息


void obj.addPhoneNumber( successCallback, errorCallback );
						

说明:

打开登录授权服务的添加用户手机号界面进行操作,添加用户手机号操作成功后通过successCallback回调函数通知,否则通过errorCallback回调函数通知。

参数:

返回值:

void : 无

平台支持:

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8"/>
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
	<title>OAuth Example</title>
	<script type="text/javascript">
var auths=null;
// 监听plusready事件  
document.addEventListener( "plusready", function(){
	// 扩展API加载完毕,现在可以正常调用扩展API
	plus.oauth.getServices( function(services){
		auths = services;
	}, function(e){
		alert( "获取分享服务列表失败:"+e.message+" - "+e.code );
	} );
}, false );
// 登录操作
function authLogin(){
	var s = auths[0];
	if ( !s.authResult ) {
		s.login( function(e){
			alert( "登录认证成功!" );
		}, function(e){
			alert( "登录认证失败!" );
		} );
	}else{
		alert( "已经登录认证!" );
	}
}
// 添加用户手机号信息
function addPhoneNumber(){
	var s = auths[0];
	if ( !s.authResult ) {
		alert("未登录授权!");
	} else {
		s.addPhoneNumber( function(e){
			alert( "添加用户手机号信息成功!" );
		}, function(e){
			alert( "添加用户手机号信息失败:"+e.message+" - "+e.code );
		} );
	}
}
	</script>
	</head>
	<body>
		1.请求登录授权认证操作<br/>
		<button onclick="authLogin()">Login</button>
		2.添加用户手机号信息<br/>
		<button onclick="addPhoneNumber()">AddPhoneNumber</button>
	</body>
</html>
						

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 - 用于保持请求和回调的状态参数。

属性:

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8"/>
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
	<title>OAuth Example</title>
	<script type="text/javascript">
var auths=null;
// 监听plusready事件  
document.addEventListener( "plusready", function(){
	// 扩展API加载完毕,现在可以正常调用扩展API
	plus.oauth.getServices( function(services){
		auths = services;
	}, function(e){
		alert( "获取分享服务列表失败:"+e.message+" - "+e.code );
	} );
}, false );
// 登录操作
function authLogin(){
	var s = auths[0];
	if ( !s.authResult ) {
		s.login( function(e){
			alert( "登录认证成功!" );
		}, function(e){
			alert( "登录认证失败!" );
		}, {appid:"wx0411fa6a39d61297"  // 微信应用的appid
			,scope:"snsapi_userinfo"}   // 授权获取用户信息
		);
	}
}
	</script>
	</head>
	<body>
		请求登录授权认证操作(配置参数)
		<button onclick="authLogin()">Login</button>
	</body>
</html>
				

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 : 无

平台支持:

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8"/>
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
	<title>OAuth Example</title>
	<script type="text/javascript">
var auths=null;
// 监听plusready事件  
document.addEventListener( "plusready", function(){
	// 扩展API加载完毕,现在可以正常调用扩展API
	plus.oauth.getServices( function(services){
		// services.length可获取当前运行环境支持登录授权认证服务数目
		if(services.length>0){
			auths = services;
		}else{
			alert("当前运行环境不支持登录授权认证服务!");
		}
	}, function(e){
		alert( "获取分享服务列表失败:"+e.message+" - "+e.code );
	} );
}, false );
	</script>
	</head>
	<body>
		获取登录授权认证服务列表
	</body>
</html>
				

AuthLogoutSuccessCallback

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


void AuthLogoutSuccessCallback( event ) {
	  // logout code
}
				

说明:

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

参数:

返回值:

void : 无

平台支持:

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8"/>
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
	<title>OAuth Example</title>
	<script type="text/javascript">
var auths=null;
// 监听plusready事件  
document.addEventListener( "plusready", function(){
	// 扩展API加载完毕,现在可以正常调用扩展API
	plus.oauth.getServices( function(services){
		auths = services;
	}, function(e){
		alert( "获取分享服务列表失败:"+e.message+" - "+e.code );
	} );
}, false );
// 注销所有登录授权认证服务
function authLogout(){
	for ( var i in auths ) {
		var s = auths[i];
		if ( s.authResult ) {
			s.logout(function(e){
				alert( "注销登录认证成功!" );
			}, function(e){
				alert( "注销登录认证失败!" );
			});
		}
	}
}
	</script>
	</head>
	<body>
		请求登录授权认证操作
		<br/>
		<button onclick="authLogout()">Logout</button>
	</body>
</html>
				

AuthSuccessCallback

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


void AuthSuccessCallback( event ) {
	  // auth code
}
				

说明:

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

参数:

返回值:

void : 无

平台支持:

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8"/>
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
	<title>OAuth Example</title>
	<script type="text/javascript">
var auths=null;
// 监听plusready事件  
document.addEventListener( "plusready", function(){
	// 扩展API加载完毕,现在可以正常调用扩展API
	plus.oauth.getServices( function(services){
		auths = services;
	}, function(e){
		alert( "获取分享服务列表失败:"+e.message+" - "+e.code );
	} );
}, false );
// 登录操作
function authLogin(){
	var s = auths[0];
	if ( !s.authResult ) {
		s.login( function(e){
			// 获取登录操作结果
			var result = e.target.authResult;
			alert( "登录认证成功:"+JSON.stringify(result) );
		}, function(e){
			alert( "登录认证失败!" );
		}, {} );
	}
}
	</script>
	</head>
	<body>
		请求登录授权认证操作
		<button onclick="authLogin()">Login</button>
	</body>
</html>
				

AuthErrorCallback

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


void AuthErrorCallback(error){
	// Error code
}
				

说明:

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

参数:

返回值:

void : 无

平台支持:

示例:


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8"/>
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
	<title>OAuth Example</title>
	<script type="text/javascript">
var auths=null;
// 监听plusready事件  
document.addEventListener( "plusready", function(){
	// 扩展API加载完毕,现在可以正常调用扩展API
	plus.oauth.getServices( function(services){
		auths = services;
	}, function(e){
		alert( "获取分享服务列表失败:"+e.message+" - "+e.code );
	} );
}, false );
// 登录操作
function authLogin(){
	var s = auths[0];
	if ( !s.authResult ) {
		s.login( function(e){
			alert( "登录认证成功!" );
		}, function(e){
			alert( "登录认证失败:"+e.message+" - "+e.code );
		}, {} );
	}
}
	</script>
	</head>
	<body>
		请求登录授权认证操作
		<button onclick="authLogin()">Login</button>
	</body>
</html>