zoukankan      html  css  js  c++  java
  • apiCloud授权绑定第三方账号,微信、QQ、微博。

    1.检测软件是否安装

    2.授权获取code

    3.获取token,openid等

    4.获取头像昵称

    var wx,qq,weibo;
    var loginParam={};
    apiready = function () {
        fix_status_bar();
        var user = $api.getStorage('user');
        var customerId = user.customer_id;
        var memberId   = user.member_id;
    
        // 获取第三方绑定信息
        api.ajax({
            url: BASE_REQUEST_URL+'/Customer/GetExternal',
            method: 'post',
            data: {
                values: {
                    customerId: customerId,
                    memberId: memberId
                }
            }
        }, function(json, err) {
            if (json.result) {
                var interText = doT.template($("#info_tmpl").text());
                $("#info_area").html(interText(json.info));
            } else {
                var toast = new auiToast();
                toast.fail({
                    title: json.msg,
                    duration: 2000
                });
    
            }
        });
    
    }
    
    
    function initWxBind() {
        wx = api.require('wx');
        wx.isInstalled(function(ret, err) {
            if (!ret.installed) {
                alert('当前设备未安装微信客户端');
            } else {
                wx.auth(function(ret, err) {
                    if (ret.status) {
                        wx.getToken({
                            code: ret.code
                        }, function(ret, err) {
                            if (ret.status) {
                                api.showProgress({
                                    style: 'default',
                                    animationType: 'fade',
                                    title: '授权成功',
                                    text: '绑定处理中...',
                                    modal: true
                                });
                                var provideName="wx_" + BASE_APP_TYPE;
                                //临时存储openId,与accessToken后面绑定账号时用到(绑定用完需要清理掉)
                                loginParam.provideName=provideName;
                                loginParam.openId=ret.openId;
                                loginParam.accessToken=ret.accessToken;
                                loginParam.refreshToken=ret.dynamicToken;
                                $api.setStorage('loginParam', loginParam);
                                //获取wx头像,昵称
                                wx.getUserInfo({
                                    accessToken: ret.accessToken,
                                    openId: ret.openId
                                }, function(ret, err) {
                                    if (ret.status) {
                                        // 绑定成功
                                        var loginParam=$api.getStorage('loginParam');
                                        loginParam.nickName=ret.nickname;
                                        loginParam.avatar=ret.headimgurl;
                                        $api.setStorage('loginParam', loginParam);
                                        // 实现绑定动作
                                        bindAccount(function (res) {
                                            if (res == true) {
                                                // 发送页面刷新事件
                                                var toast = new auiToast();
                                                toast.success({
                                                    title: "绑定成功",
                                                    duration: 2000
                                                });
                                                setTimeout("location.reload()", 2000);
                                            }
                                        });
                                        api.hideProgress();
                                    }
                                });
    
                            } else {
                                alert(JSON.stringify(err))
                            }
                        });
                    } else {
                        var toast = new auiToast();
                        toast.fail({
                            title: "微信授权绑定失败",
                            duration: 1500
                        });
                    }
                });
            }
        });
    }
    
    function initQQBind() {
        qq = api.require('qq');
        qq.login(function(ret, err) {
            if (ret.status) {
                api.showProgress({
                    style: 'default',
                    animationType: 'fade',
                    title: '授权成功',
                    text: '绑定处理中...',
                    modal: true
                });
                var provideName="qq_" + BASE_APP_TYPE;
                loginParam.provideName=provideName;
                loginParam.openId=ret.openId;
                loginParam.accessToken=ret.accessToken;
                $api.setStorage('loginParam', loginParam);
                //获取qq头像,昵称
                qq.getUserInfo(function(ret, err) {
                    if (ret.status) {
                        // 绑定成功
                        var loginParam=$api.getStorage('loginParam');
                        loginParam.nickName=ret.info.nickname;
                        loginParam.avatar=ret.info.figureurl_qq_2;
                        $api.setStorage('loginParam', loginParam);
                        //实现绑定动作
                        bindAccount(function (res) {
                            if (res == true) {
                                // 发送页面刷新事件
                                var toast = new auiToast();
                                toast.success({
                                    title: "绑定成功",
                                    duration: 2000
                                });
                                setTimeout("location.reload()", 2000);
                            }
                        });
                        api.hideProgress();
    
                    }
                });
                
            } else {
                var toast = new auiToast();
                toast.fail({
                    title: "授权失败",
                    duration: 1500
                });
            }
        });
    }
    
    
    function initWbBind() {
        weibo = api.require('weibo');
        weibo.auth(function(ret, err) {
            //alert(JSON.stringify(ret));
            if (ret.status) {
                api.showProgress({
                    style: 'default',
                    animationType: 'fade',
                    title: '授权成功',
                    text: '绑定处理中...',
                    modal: true
                });
                var provideName="wb_" + BASE_APP_TYPE;
                //临时存储openId,与accessToken后面绑定账号时用到(绑定用完需要清理掉)
                loginParam.provideName=provideName;
                loginParam.openId=ret.userId;
                loginParam.accessToken=ret.token;
                $api.setStorage('loginParam', loginParam);
                //获取微博头像,昵称
                weibo.getUserInfo(function(ret,err){
                    if (ret.status) {
                        // 绑定成功
                        var loginParam=$api.getStorage('loginParam');
                        loginParam.nickName=ret.userInfo.screen_name;
                        loginParam.avatar=ret.userInfo.avatar_large;
                        $api.setStorage('loginParam', loginParam);
                        // 实现绑定动作
                        bindAccount(function (res) {
                            if (res == true) {
                                // 发送页面刷新事件
                                var toast = new auiToast();
                                toast.success({
                                    title: "绑定成功",
                                    duration: 2000
                                });
                                setTimeout("location.reload()", 2000);
                            }
                        });
                        api.hideProgress();
                    }
                });
                
            }else {
                var toast = new auiToast();
                toast.fail({
                    title: "授权失败",
                    duration: 1500
                });
            }
        });
    }
    
    
    
    // 解除绑定
    function removeAuth(externalId) {
        var user = $api.getStorage('user');
        var customerId = user.customer_id;
    
        // 获取第三方绑定信息
        api.ajax({
            url: BASE_REQUEST_URL+'/Customer/RemoveAuthentication',
            method: 'post',
            data: {
                values: {
                    customerId: customerId,
                    externalId:externalId
                }
            }
        }, function(json, err) {
            if (json.result) {
                var toast = new auiToast();
                toast.success({
                    title: '解绑成功',
                    duration: 2000
                });
                setTimeout("location.reload();", 2000);
            } else {
                var toast = new auiToast();
                toast.fail({
                    title: json.msg,
                    duration: 2000
                });
    
            }
        });
        
    }
    
    function bindAccount(callback) {
        var loginParam = $api.getStorage('loginParam');
        var user       = $api.getStorage('user');
        api.ajax({
            url: BASE_REQUEST_URL + '/Customer/AssociateAccountWithExistCustomer',
            method: 'post',
            data: {
                values: {
                    provideName: loginParam.provideName,
                    openId: loginParam.openId,
                    accessToken: loginParam.accessToken,
                    refreshToken: loginParam.refreshToken,
                    userName: user.login_name,
                    nickName: loginParam.nickName,
                    avatar: loginParam.avatar,
                }
            }
        }, function(ret, err) {
            if (ret.status == 1) {
                callback(true);
            }
            callback(false);
        });
    }
    
    function showAction() {
        var dialogBox = api.require('dialogBox');
        dialogBox.actionMenu ({
            tapClose: true, // 点击关闭
            rect:{
                h: 150
            },
            texts:{
                cancel: '取消'
            },
            items:[
                {
                    text: '绑定微信',
                    icon: 'widget://image/share_wx.png'
                },
                {
                    text: '绑定QQ',
                    icon: 'widget://image/share_qq.png'
                },
                {
                    text: '绑定微博',
                    icon: 'widget://image/share_wb.png'
                },
            ],
            styles:{
                bg:'#FFF',
                column: 3,
                itemText: {
                    color: '#000',
                    size: 12,
                    marginT:8
                },
                itemIcon:{
                    size:50
                },
                cancel:{
                    bg: 'fs://icon.png',
                    color:'#000',
                    h: 44 ,
                    size: 14
                }
            }
        }, function(ret){
            if (ret.index == '0') { // 微信
                initWxBind();
                dialogBox.close();
            }
    
            if (ret.index == '1') { // QQ
                initQQBind();
                dialogBox.close();
            }
    
            if (ret.index == '2') { // 微博
                initWbBind();
                dialogBox.close();
            }
    
            if (ret.eventType == 'cancel') {
                dialogBox.close();
            }
        });
    }
    
    

    确保已经有这些数据申请,申请要些时日。

    <feature name="wx"> 
        <param name="urlScheme" value="wx65fbcf8b5a4765cc"/>  
        <param name="apiKey" value="wx65fbcf8b5a4765cc"/>  
        <param name="apiSecret" value="6f9e7a1cb328745de623263c18773368"/> 
    </feature>  
    <feature name="qq"> 
        <param name="urlScheme" value="tencent1105688283"/>  
        <param name="apiKey" value="1105688283"/> 
    </feature>  
    <feature name="weibo"> 
        <param name="urlScheme" value="wb3537030359"/>  
        <param name="apiKey" value="3537030359"/>  
        <param name="registUrl" value="http://www.diandodo.com"/> 
    </feature>  
    
  • 相关阅读:
    【网络流24题----15】汽车加油行驶问题
    【网络流24题】最小路径覆盖问题
    网络流二·最大流最小割定理
    贪吃蛇
    【SCOI2008】着色方案
    DARK的锁链
    【NOIP2014】飞扬的小鸟
    [NOIP2012] 借教室
    [NOIP2012] 开车旅行
    [NOIP2012] 国王游戏
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/6164960.html
Copyright © 2011-2022 走看看