mui-OAuth 모듈은 클라이언트의 사용자 로그인 인증 기능을 관리하고 제3자 플랫폼에 접근하는 자원을 응용할 수 있습니다.

11883 단어 mui
로그인 인증 서비스 목록 얻기:
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

좋은 웹페이지 즐겨찾기