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>
apiCloud授权绑定第三方账号,微信、QQ、微博。的更多相关文章
- 第三方账号登录--QQ登录,以及QQ微博账号登录
在QQ登陆测试的时候,刚申请正常登陆,但是由于app未上线,或许是腾讯升级造成的个别时候QQ登陆无法成功会提示下图代码,功能上没啥问题,已经达到 测试效果了.附上腾讯错误代码图(大家测试QQ登陆的时候 ...
- js分享功能(微信,QQ,微博,空间,豆瓣等)
日常编程中,我们可能会碰到项目中的分享功能,各大平台都有分享接口和文档说明,当然也有一些一键分享插件,例如:sosh,iShare.js等等 但有些同学不想引用插件,那么我整理了一些常用的分享至平台功 ...
- 如何在自己的代码中实现分享视频文件或者是图片文件到微信 QQ微博 新浪微博等!!!
首先在文档第一句我先自嘲下 , 我是大傻逼, 弄了两天微信是视频分享,一直被说为啥跟系统的相册分享的不一样,尼玛!!! 这里来说正文,我这里不像多少太多,大家都是程序猿,具体的阔以看代码. 搞代码之前 ...
- laravel5实现第三方登录(微信)
背景 最近手头一个项目需要实现用户在网站的第三方登录(微信和微博),后端框架laravel5.4. 实现过程以微信网页版第三方登录,其他于此类似,在此不做重复. 准备工作 网站应用微信登录是基于OAu ...
- Django 实现第三方账号登录网站
这里我们使用 django-allauth 模块来实现第三方账号验证登录,官方文档如下:https://django-allauth.readthedocs.io/en/latest/ . 安装 dj ...
- 使用ShareSDK完成第三方(QQ、微信、微博)登录和分享
这几天遇到一个需求:做第三方登录和分享.遇到了一些坑,把整个过程整理记录下来,方便他人,同时也捋一下思路. 当时考虑过把每个平台的SDK下载下来,一个一个弄,一番取舍后决定还是用ShareSDK.这里 ...
- ios第三方分享到qq、微信、人人网、微博总结
我们开发出来的APP通常要通过第三方分享到其他社交平台,如qq.微博微信 等.通过分享可以提高APP的传播效率,增加APP的曝光率,因此也算是APP功能 里的标配了吧.目前常用的第三方分享途径有qq. ...
- 前端html第三方登录集合,微信,微博,QQ
申请开发者账号之内的就不累赘了,网上一大堆: 说下需求,一个网页要在三类容器运行,公司app,微信自动登录,浏览器. 假设是已经申请完成各平台开发者账号. 先来简单的,微博和QQ 微博: 引入微博JS ...
- 实现第三方登录(QQ、微信、微博)
第三方登录,就是使用大家比较熟悉的比如QQ.微信.微博等第三方软件登录自己的网站,这可以免去注册账号.快速留住用户的目的,免去了相对复杂的注册流程.下边就给大家讲一下怎么使用PHP开发QQ登录的功能. ...
随机推荐
- hdwiki 在IIS 下的伪静态
HDwiki有SEO设置的功能,此功能可以将HDwiki的页面进行URL静态化转换,从而使HDwiki内容更容易被搜索引擎挖掘,提高被收录的机率.注意事项 1.本功能对服务器环境有特殊要 ...
- android中文件操作的四种枚举
1.MODE_PRIVATE:默认操作模式,代表该文件是私有数据,只能被应用自身访问,在该模式下,写入的的内容会覆盖原文件中的内容. 2.MODE_APPEND:该模式会检查文件是否存在,存在就往文件 ...
- [团队项目3.0]Scrum团队成立
Scrum团队成立 5.Scrum团队成立 5.1 团队名称,团队目标.团队口号.团队照: 5.2 角色分配 产品负责人: 决定开发内容和优先级排序,最大化产品以及开发团队工作的价值. Scrum M ...
- Spring 的优秀工具类盘点
文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...
- ..在lua中运用
..连接两个字符串 th> a="hello" th> b="world" th> print(a..b) helloworld th> ...
- (转)Linux下安装rar fou linux
在Linux下安装rar fou linux rar for linux 软件下载地址:http://www.rarsoft.com/download.htm 到目前为止最新的版本为4.10 beta ...
- tee 命令基本使用方法、输出到多个文件
功能说明:读取标准输入的数据,并将其内容输出成文件.语 法:tee [-ai][--help][--version][文件...]补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出 ...
- repo 官方教程
参考 http://android.git.kernel.org/repo http://source.android.com/source/downloading.html http://sourc ...
- 借助Nodejs在服务端使用jQuery采集17173游戏排行信息
Nodejs相关依赖模块介绍 Nodejs的优势这里就不做介绍啦,这年头相信大家对它也不陌生了.这里主要介绍一下用到的第三方模块. async:js代码中到处都是异步回调,很多时候我们需要做同步处理, ...
- SQL判断汉字
/* unicode编码范围: 汉字:[0x4e00,0x9fa5](或十进制[19968,40869]) 数字:[0x30,0x39](或十进制[48, 57]) 小写字母:[0x61,0x7a]( ...