apiCloud授权绑定第三方账号,微信、QQ、微博。

简介:

422101-20161212161717354-1573846954.png

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>

本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6164960.html,如需转载请自行联系原作者

相关文章
|
14天前
|
小程序 安全 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的身份认证与授权机制。身份认证包括手机号验证、微信登录和第三方登录,而授权机制涉及角色权限控制、ACL和OAuth 2.0。实践中,开发者可利用微信登录获取用户信息,集成第三方登录,以及实施角色和ACL进行权限控制。注意点包括安全性、用户体验和合规性,以保障小程序的安全运行和良好体验。通过这些方法,开发者能有效掌握小程序全栈开发技术。
|
3月前
|
存储 JavaScript 开发工具
uniapp-实现微信授权登录
uniapp-实现微信授权登录
717 0
|
3月前
|
小程序
内网环境中ruoyi若依实现微信小程序授权登录解决办法
内网环境中ruoyi若依实现微信小程序授权登录解决办法
179 0
|
3月前
|
数据安全/隐私保护
常用的表单校验规则——邮箱/QQ/身份证号码/微信/电话/数字字母/整数/文本/密码等
常用的表单校验规则——邮箱/QQ/身份证号码/微信/电话/数字字母/整数/文本/密码等
60 0
|
4月前
|
小程序 API 开发者
微信小程序授权登录流程以及应用到的API
微信小程序授权登录流程以及应用到的API
200 0
|
16天前
|
小程序
【微信小程序6】引入第三方UI的方法(ColorUi)
【微信小程序6】引入第三方UI的方法(ColorUi)
17 0
|
29天前
|
前端开发 NoSQL 数据库
设计 QQ、微信等第三方账号登陆
设计 QQ、微信等第三方账号登陆
17 0
设计 QQ、微信等第三方账号登陆
|
1月前
|
JSON 小程序 C#
微信网页授权之使用完整服务解决方案
微信网页授权之使用完整服务解决方案
|
2月前
|
小程序 JavaScript
微信小程序授权登录?
微信小程序授权登录?
|
3月前
|
JSON 小程序 前端开发
史上最详细微信小程序授权登录与后端SprIngBoot交互操作说明!!!附源代码
史上最详细微信小程序授权登录与后端SprIngBoot交互操作说明!!!附源代码
405 2

热门文章

最新文章