微信小程序?qū)崿F(xiàn)授權(quán)登錄
前言:由于微信官方修改了 getUserInfo 接口,所以現(xiàn)在無(wú)法實(shí)現(xiàn)一進(jìn)入微信小程序就彈出授權(quán)窗口,只能通過(guò) button 去觸發(fā)。官方連接:點(diǎn)擊打開(kāi)鏈接
1.實(shí)現(xiàn)思路
自己寫(xiě)一個(gè)微信授權(quán)登錄頁(yè)面讓用戶實(shí)現(xiàn)點(diǎn)擊的功能,也就是實(shí)現(xiàn)了通過(guò) button 組件去觸發(fā) getUserInof 接口。在用戶進(jìn)入微信小程序的時(shí)候,判斷用戶是否授權(quán)了,如果沒(méi)有授權(quán)的話就顯示下面“界面簡(jiǎn)介”的第一個(gè)圖,讓用戶去執(zhí)行授權(quán)的操作。如果已經(jīng)授權(quán)了,則直接跳過(guò)這個(gè)頁(yè)面,進(jìn)入首頁(yè)。
2.界面簡(jiǎn)介


3.源碼
login.wxml
<view wx:if="{{canIUse}}">
<view class='header'>
<image src='/images/wx_login.png'></image>
</view>
<view class='content'>
<view>申請(qǐng)獲取以下權(quán)限</view>
<text>獲得你的公開(kāi)信息(昵稱,頭像等)</text>
</view>
<button class='bottom' type='primary' open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="bindGetUserInfo">
授權(quán)登錄
</button>
</view>
<view wx:else>請(qǐng)升級(jí)微信版本</view>
login.wcss
.header {
margin: 90rpx 0 90rpx 50rpx;
border-bottom: 1px solid #ccc;
text-align: center;
width: 650rpx;
height: 300rpx;
line-height: 450rpx;
}
.header image {
width: 200rpx;
height: 200rpx;
}
.content {
margin-left: 50rpx;
margin-bottom: 90rpx;
}
.content text {
display: block;
color: #9d9d9d;
margin-top: 40rpx;
}
.bottom {
border-radius: 80rpx;
margin: 70rpx 50rpx;
font-size: 35rpx;
}
login.json
{
"navigationBarTitleText": "授權(quán)登錄"
}
login.js
代碼的 wx.request 是我項(xiàng)目與后臺(tái)的一些交互,可直接刪除掉。
需要修改的地方:
記得自己補(bǔ)上 wx.switchTab 接口中的 url 屬性,這是授權(quán)成功后跳轉(zhuǎn)的頁(yè)面路徑,由于我的首頁(yè)是 tarBar 頁(yè)面,所以這里用wx.switchTab ,如果不是 tarBar 頁(yè)面的話,可以用 wx.navigateTo 和 wx.redirecTo 去跳轉(zhuǎn)
Page({
data: {
//判斷小程序的API,回調(diào),參數(shù),組件等是否在當(dāng)前版本可用。
canIUse: wx.canIUse('button.open-type.getUserInfo')
},
onLoad: function () {
var that = this;
// 查看是否授權(quán)
wx.getSetting({
success: function (res) {
if (res.authSetting['scope.userInfo']) {
wx.getUserInfo({
success: function (res) {
//從數(shù)據(jù)庫(kù)獲取用戶信息
that.queryUsreInfo();
//用戶已經(jīng)授權(quán)過(guò)
wx.switchTab({
url: ''
})
}
});
}
}
})
},
bindGetUserInfo: function (e) {
if (e.detail.userInfo) {
//用戶按了允許授權(quán)按鈕
var that = this;
//插入登錄的用戶的相關(guān)信息到數(shù)據(jù)庫(kù)
wx.request({
url: getApp().globalData.urlPath + 'hstc_interface/insert_user',
data: {
openid: getApp().globalData.openid,
nickName: e.detail.userInfo.nickName,
avatarUrl: e.detail.userInfo.avatarUrl,
province:e.detail.userInfo.province,
city: e.detail.userInfo.city
},
header: {
'content-type': 'application/json'
},
success: function (res) {
//從數(shù)據(jù)庫(kù)獲取用戶信息
that.queryUsreInfo();
console.log("插入小程序登錄用戶信息成功!");
}
});
//授權(quán)成功后,跳轉(zhuǎn)進(jìn)入小程序首頁(yè)
wx.switchTab({
url: ''
})
} else {
//用戶按了拒絕按鈕
wx.showModal({
title:'警告',
content:'您點(diǎn)擊了拒絕授權(quán),將無(wú)法進(jìn)入小程序,請(qǐng)授權(quán)之后再進(jìn)入!!!',
showCancel:false,
confirmText:'返回授權(quán)',
success:function(res){
if (res.confirm) {
console.log('用戶點(diǎn)擊了“返回授權(quán)”')
}
}
})
}
},
//獲取用戶信息接口
queryUsreInfo: function () {
wx.request({
url: getApp().globalData.urlPath + 'hstc_interface/queryByOpenid',
data: {
openid: getApp().globalData.openid
},
header: {
'content-type': 'application/json'
},
success: function (res) {
console.log(res.data);
getApp().globalData.userInfo = res.data;
}
});
},
})
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringMVC+bootstrap table實(shí)例詳解
本文通過(guò)實(shí)例給大家介紹了SpringMVC+bootstrap-table,需要的朋友可以參考下2017-06-06
JavaScript統(tǒng)計(jì)字符出現(xiàn)次數(shù)
這篇文章主要為大家詳細(xì)介紹了JavaScript字符統(tǒng)計(jì)出現(xiàn)次數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03
一個(gè)封裝js代碼-----展開(kāi)收起效果示例
本文為大家介紹下一個(gè)封裝展開(kāi)收起效果js代碼;引用jQuery的框架,兼容ie6以上,火狐,谷歌,ie6沒(méi)有測(cè)試大家可以自己測(cè)試2013-07-07
JavaScript 中級(jí)筆記 第五章 面向?qū)ο蟮幕A(chǔ)
對(duì)象是JavaScript的基礎(chǔ)。從最基本的層次上說(shuō),對(duì)象是一系列屬性的集合。2009-09-09
JavaScript之RegExp_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
正則表達(dá)式是一種用來(lái)匹配字符串的強(qiáng)有力的武器。它的設(shè)計(jì)思想是用一種描述性的語(yǔ)言來(lái)給字符串定義一個(gè)規(guī)則,凡是符合規(guī)則的字符串,我們就認(rèn)為它“匹配”了,否則,該字符串就是不合法的2017-06-06
JavaScript Cookie的讀取和寫(xiě)入函數(shù)
Cookie的讀取和寫(xiě)入實(shí)現(xiàn)函數(shù)。2009-12-12

