# 第三方登錄--微信篇
1、首先引入
2、使用auth方法
3、配置
3 - 1
首頁需要到微信開放平臺去申請審核 https://open.weixin.qq.com/

**注:如果需要ios 和 安卓 使用,請注意上圖 將ios和android應(yīng)用都勾選上**
4、auth方法成功之后,使用getToken方法
5、在使用getToken方法成功后,使用getUserInfo方法
> 將獲取到的用戶信息按需要邏輯處理
* * * * *
附上小編的項目代碼
小編的代碼有處理是否綁定的邏輯以及登錄等,大家只需參考wx登錄部分即可
**html部分**
~~~
<div class="aui-col-xs-2" style="text-align: center;" tapmode onclick="wxauth()">
<i class="iconfont icon-liaotian icon_bg2"></i>
<div class="aui-grid-label" style="display:block;margin-top:10px;">微信</div>
</div>
~~~
**js部分**
~~~
//微信登錄
function wxauth() {
api.showProgress({
style: 'default',
animationType: 'fade',
title: '',
text: '啟動中...',
modal: false
});
var wx = api.require('wx');
wx.auth({
apiKey: 'wx***********'
}, function(ret, err) {
api.hideProgress();
if (ret) {
if (ret.status) {
var code = ret.code;
getToken(code);
} else {
api.toast({
msg: '錯誤',
duration: 2000,
location: 'middle'
});
}
} else {
switch(err.code) {
case -1:
api.toast({
msg: '未知錯誤',
duration: 2000,
location: 'middle'
});
break;
case 1:
api.toast({
msg: '用戶取消',
duration: 2000,
location: 'middle'
});
break;
case 2:
api.toast({
msg: '用戶拒絕授權(quán)',
duration: 2000,
location: 'middle'
});
break;
case 3:
api.toast({
msg: '當(dāng)前設(shè)備未安裝微信客戶端',
duration: 2000,
location: 'middle'
});
break;
}
}
});
}
~~~
~~~
/**
* [getToken 獲取用戶token]
* @param {[type]} code [授權(quán)成功后返回code 參數(shù)]
* @return {[type]} [description]
*/
function getToken(code) {
var wx = api.require('wx');
wx.getToken({
apiKey: '',
apiSecret: '',
code: code
}, function(ret, err) {
if (ret) {
if (ret.status) {
var accessToken=ret.accessToken;
var dynamicToken=ret.dynamicToken;
var openId=ret.openId;
getUserInfo(accessToken,openId);
} else {
api.toast({
msg: '錯誤',
duration: 2000,
location: 'middle'
});
}
} else {
switch(err.code) {
case -1:
api.toast({
msg: '未知錯誤',
duration: 2000,
location: 'middle'
});
break;
case 1:
api.toast({
msg: 'apiKey值為空或非法',
duration: 2000,
location: 'middle'
});
break;
case 2:
api.toast({
msg: 'apiSecret值為空或非法',
duration: 2000,
location: 'middle'
});
break;
case 3:
api.toast({
msg: 'code值為空或非法',
duration: 2000,
location: 'middle'
});
break;
case 4:
api.toast({
msg: '網(wǎng)絡(luò)超時',
duration: 2000,
location: 'middle'
});
break;
}
}
});
}
~~~
~~~
/**
* [getUserInfo 獲取用戶信息]
* @param {[type]} accessToken [getToken 接口或 refreshToken 接口成功獲取的 accessToken 值]
* @param {[type]} openId [getToken 接口或 refreshToken 接口成功獲取的 openId 值]
*/
function getUserInfo(accessToken,openId) {
var wx = api.require('wx');
wx.getUserInfo({
accessToken: accessToken,
openId: openId
}, function(ret, err) {
if (ret) {
if (ret.status) {
var openid=ret.openid,
unionid = ret.unionid,
nickname=ret.nickname,
head_pic=ret.headimgurl,
source='weixin';
api.ajax({
url: domainName + '/index.php?g=User&m=Api&a=thirdLogin',
method: 'post',
data: {
values: {
openid: openid,
unionid: unionid,
nickname: nickname,
head_pic: head_pic,
source: source
}
}
}, function(ret, err) {
if (ret) {
if (ret.msg == '0') { //已經(jīng)存在該用戶信息
if (ret.binding_status == '1') { /*1:未綁定 2已綁定*/
//未綁定,到綁定頁面
api.openWin({
name: 'user_binding_win',
url: './user_binding_win.html',
pageParam: {
openid: openid,
source: source
}
});
} else {
//已綁定,到登錄頁面
userInfoAll(openid,source);
api.openWin({
name: 'index',
url: '../main.html'
});
}
} else if (ret.msg == '1'){ //添加用戶信息成功
api.openWin({
name: 'user_binding_win',
url: './user_binding_win.html',
pageParam: {
openid: openid
}
});
} else if (ret.msg =='2'){
api.toast({
msg: '添加用戶失敗',
duration: 2000,
location: 'bottom'
});
} else {
api.toast({
msg: '未知錯誤',
duration: 2000,
location: 'bottom'
});
}
} else {
api.toast({
msg: '未知錯誤',
duration: 2000,
location: 'middle'
});
}
});
} else {
api.toast({
msg: '錯誤',
duration: 2000,
location: 'middle'
});
}
} else {
switch(err.code) {
case -1:
api.toast({
msg: '未知錯誤',
duration: 2000,
location: 'middle'
});
break;
case 1:
api.toast({
msg: 'accessToken 過期',
duration: 2000,
location: 'middle'
});
break;
case 2:
api.toast({
msg: 'openId非法',
duration: 2000,
location: 'middle'
});
break;
case 3:
api.toast({
msg: 'openId值為空',
duration: 2000,
location: 'middle'
});
break;
case 4:
api.toast({
msg: 'accessToken值為空',
duration: 2000,
location: 'middle'
});
break;
case 5:
api.toast({
msg: 'accessToken非法',
duration: 2000,
location: 'middle'
});
break;
case 6:
api.toast({
msg: '網(wǎng)絡(luò)超時',
duration: 2000,
location: 'middle'
});
break;
}
}
});
}
~~~
- 關(guān)于我們
- ApiCloud
- 支付模塊
- 微信支付--wxPay(客戶端)
- 微信支付--wxPay(服務(wù)端)
- 支付寶支付--aliPay(客戶端配置)
- 支付寶支付--aliPay(服務(wù)端配置)
- DoT模板
- 緩存模塊
- 監(jiān)聽模塊
- 百度定位模塊
- 設(shè)置狀態(tài)欄字體顏色
- 選擇城市插件
- 跨頁面執(zhí)行方法
- 安卓-點(diǎn)擊返回事件
- 上傳圖片模塊
- 點(diǎn)擊彈出放大圖片層
- 魅族手機(jī)apiready問題
- 分享
- 跨win或frm執(zhí)行腳本
- 關(guān)于ios數(shù)字自動識別成手機(jī)號
- 百度地圖bMap
- 語音識別模塊
- tabBarMenu底部導(dǎo)航
- 第三方登錄
- QQ網(wǎng)站和appQQ賬號的統(tǒng)一問題解決
- 微信登錄
- QQ登錄
- 微博登錄
- 上拉加載、下拉刷新模塊
- 圖片緩存
- 文件和圖片緩存機(jī)制分享
- PHP
- 支付寶及時到賬
- no input file specified報錯解決
- thinkphp 整合kindeditor
- 整合tpshop微信模塊到thinkcmf中
- thinkphp3.1.3整合支付寶
- 網(wǎng)站接入QQ OAuth2.0登錄教程
- ThinkPHP整合百度編輯器Ueditor
- PHP加快執(zhí)行效率的寫法規(guī)范
- ThinkPHP操作大全
- PHP操作大全
- Thinkphp中SQL操作返回值
- php5.3 foreach 使用&(與運(yùn)算符)引用賦值要注意的問題
- mysql給字段追加值
- 阿里大魚短信平臺接入
- Navicat 導(dǎo)出 Mysql 數(shù)據(jù)字典
- php 面向?qū)ο笕娼坛?/a>
- PHP5下調(diào)用SOAP
- PHP處理時間格式添加空格
- 偽裝URL請求(.htaccess)
- url請求參數(shù)加解密
- JS插件
- artDialog彈窗-頁面?zhèn)髦?/a>
- jQuery點(diǎn)擊遮罩彈出層固定居中
- jeBox原生彈窗
- bxslider輪播
- js生成指定位數(shù)隨機(jī)數(shù)
- 發(fā)送短信倒計時
- js調(diào)試
- jQuery.validator 表單驗證規(guī)則
- Swiper 輪播
- 獲得焦點(diǎn)時-圖片抖動
- uploadify無刷新上傳圖片
- 導(dǎo)航下拉隱藏上拉顯示
- 獲得焦點(diǎn)時-加黑色蒙版
- jquery.qrcode.js生成二維條形碼(支持中文)
- jquery.qrcode.js生成二維條形碼(官方不支持中文)
- nth-child 選擇器
- 無刷新點(diǎn)擊實(shí)現(xiàn)加載更多數(shù)據(jù)
- 刷新頁面方法
- 判斷滾動條向上向下
- 跨瀏覽器復(fù)制jQuery-zclip
- js校驗表單后提交表單的三種方法
- 用JS判斷下拉框是否選中
- div中滾動
- 提交時彈出模態(tài)框
- 當(dāng)圖片不顯示時替換方法
- 前端
- CSS3
- HTML5
- css技巧
- 移動端rem
- Flex布局
- 電商詳情滾動條監(jiān)聽
- VueCircleMenu圓環(huán)按鈕
- iframe自適應(yīng)頁面高度
- 百度Echart
- input:radio改變選中顏色
- Jquery
- 響應(yīng)式布局基本實(shí)現(xiàn)Media Query
- 循環(huán)輸出只輸出新內(nèi)容
- 小程序
- wx.request坑
- 概要
- git操作
- 本地記住密碼
- 操作
- 生成ssh公鑰 記住密碼
- git避坑
- ES6學(xué)習(xí)手札
- 調(diào)試小插件
- 谷歌插件Postman
- PHP調(diào)試助手
- WordPress
- 緩存服務(wù)器Redis
- 在線代碼運(yùn)行 Docker
- 在ubuntu下怎樣安裝https
- BrowserSync 瀏覽器同步測試工具
- getmarkman高效的設(shè)計稿標(biāo)注、測量工具
- PHPstrom軟件
- 服務(wù)器
- linux 安裝搭建服務(wù)器配置及nginx配置
- tpshop的nginx 服務(wù)器配置方法
- (服務(wù)器訪問文件404解決辦法)IIS 之 添加MIME擴(kuò)展類型及常用的MIME類型列表
- mysql部分
- mysql緩存
- MySql監(jiān)控工具--mytop
- MySql主從搭建
- mysql優(yōu)化
- Mysql 復(fù)制 (主從復(fù)制)
- iOS開發(fā)筆記 - 上線流程
- VUE避坑指南
- 從零開始學(xué)Vue
- Vue-cli
- Webpack
- VUE小記
- npm打包空白
- 打包背景圖片/項目圖片不顯示
- VUE避坑指南/elementUI upload 自定義http-request上傳
- 關(guān)于watch監(jiān)聽路由重復(fù)加載方法
- 解決加載內(nèi)容的時候閃動問題
- vuecli沒有network訪問地址
- python學(xué)習(xí)
- python初始
- pytho內(nèi)置函數(shù)大全
- win10 播放器播放TS文件問題
- 設(shè)計網(wǎng)站
- VUE避坑指南/VUE-CLI部署空白
- swiper使用問題
- uni-app學(xué)習(xí)手冊
- 目錄結(jié)構(gòu)
- layUI
- nodesass版本sassloader版本問題
