获取登录授权认证服务列表:
void plus.oauth.getServices( successCB, errorCB );
登录授权认证服务操作失败回调函数(errorCB ):
void AuthErrorCallback(error){
// error: ( Exception ) 必选 操作失败错误信息
// error.code - 表示错误代码; error.message - 错误描述信息;
}
获取登录授权认证服务成功回调(successCB):
void ServicesSuccessCallback( services ) {
//services: ( Array[ AuthService ] ) 必选 运行环境支持的登录授权认证服务列表
//运行环境支持的登录授权认证服务列表数组,可通过services.length获取服务列表的数目。
//如果当前运行环境没有支持的登录授权认证服务,则返回空数组。
}
AuthService对象用于表示登录授权认证服务,用于向系统进行登录授权认证操作。
//登录授权认证服务对象
interface plus.oauth.AuthService {
//登录授权认证服务标识
attribute String id;
//描述
attribute String description;
//授权认证结果数据,值为"undefined"则表示未进行授权认证或者是授权认证失败
attribute AuthInfo authResult;
//登录授权认证用户信息,如果值为"undefined"则表示未获取过用户信息
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 );
}
interface plus.oauth.AuthInfo {
attribute String openid;
attribute String access_token;
attribute String expires_in:
attribute String refresh_token;
attribute String scope;
}
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;
}
登录授权认证服务操作成功回调函数:
void AuthSuccessCallback( event ) {
// event: ( JSON ) 必选 登录授权认证服务操作回调事件参数
// event.target - 表示登录授权认证服务对象,
// 可以通过此对象的authResult、userInfo属性来获取操作结果信息。
}
example
// 登录操作
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( "登录认证失败!" );
}, {} );
}
}
登录授权认证服务操作失败回调函数同上AuthErrorCallback(error)
示例代码
//判断是否安装客户端
var appIsInstalled = function(id) {
if (id === 'qihoo' && mui.os.plus) {
return true;
}
if (mui.os.android) {
var main = plus.android.runtimeMainActivity();
var packageManager = main.getPackageManager();
var PackageManager = plus.android.importClass(packageManager)
var packageName = {
"qq": "com.tencent.mobileqq",
"weixin": "com.tencent.mm",
"sinaweibo": "com.sina.weibo"
}
try {
return packageManager.getPackageInfo(packageName[id], PackageManager.GET_ACTIVITIES);
} catch (e) {}
} else {
switch (id) {
case "qq":
var TencentOAuth = plus.ios.import("TencentOAuth");
return TencentOAuth.iphoneQQInstalled();
case "weixin":
var WXApi = plus.ios.import("WXApi");
return WXApi.isWXAppInstalled()
case "sinaweibo":
var SinaAPI = plus.ios.import("WeiboSDK");
return SinaAPI.isWeiboAppInstalled()
default:
break;
}
}
}
//第三方登录
var authBtns = ['qihoo', 'weixin', 'sinaweibo', 'qq']; //配置业务支持的第三方登录
var auths = {};
var oauthArea = doc.querySelector('.oauth-area');
plus.oauth.getServices(function(services) {
for (var i in services) {
var service = services[i];
auths[service.id] = service;
if (~authBtns.indexOf(service.id)) {
var isInstalled = appIsInstalled(service.id);
var btn = document.createElement('div');
//如果微信未安装,则为不启用状态
btn.setAttribute('class', 'oauth-btn' + (!isInstalled && service.id === 'weixin' ? (' disabled') : ''));
btn.authId = service.id;
btn.style.backgroundImage = 'url("images/' + service.id + '.png")'
oauthArea.appendChild(btn);
}
}
$(oauthArea).on('tap', '.oauth-btn', function() {
if (this.classList.contains('disabled')) {
plus.nativeUI.toast('您尚未安装微信客户端');
return;
}
var auth = auths[this.authId];
var waiting = plus.nativeUI.showWaiting();
auth.login(function() {
waiting.close();
//plus.nativeUI.toast("登录认证成功");
auth.getUserInfo(function() {
var name = auth.userInfo.nickname || auth.userInfo.name;
plus.nativeUI.toast(name+"登录认证成功");
}, function(e) {
plus.nativeUI.toast("获取用户信息失败:" + e.message);
});
}, function(e) {
waiting.close();
plus.nativeUI.toast("登录认证失败:" + e.message);
});
});
}, function(e) {
oauthArea.style.display = 'none';
plus.nativeUI.toast("获取登录认证失败:" + e.message);
});
参考: http://www.html5plus.org/doc/zh_cn/oauth.html#plus.oauth.AuthOptions