小程式登入-joe
阿新 • • 發佈:2018-12-18
-----------------------------------------------------------------------------編輯日期2018-10-29
小程式的登入
- 登入的規範過程如下:
- app.js中拿到code與後臺介面互動換區使用者的openid
- index.js里根據app.js中的openid與後臺互動獲得使用者登入狀態(這裡看需求)
- 程式碼如下:
- app.js:
// app.js
App({
onLaunch: function () {
// 展示本地儲存能力
let that = this
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
// 登入
wx.login({
success: res => {
}
})
//獲取使用者資訊
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 已經授權,可以直接呼叫 getUserInfo 獲取頭像暱稱,不會彈框
wx.getUserInfo({
success: res => {
// 可以將 res 傳送給後臺解碼出 unionId
this.globalData.userInfo = res.userInfo
// 由於 getUserInfo 是網路請求,可能會在 Page.onLoad 之後才返回
// 所以此處加入 callback 以防止這種情況
if (this.userInfoReadyCallback) {
this.userInfoReadyCallback(res)
}
}
})
}
}
})
},
/*-- 這是獲取openid的函式 --*/
getOpenid: function () {
var that = this;
return new Promise(function (resolve, reject) {
wx.login({
success: function (res) {
//code 獲取使用者資訊的憑證
if (res.code) {
//請求獲取使用者openid
wx.request({
url: "test.html", //這裡是你的介面
data: { 'jsCode': res.code, }, //這裡是需要傳給後臺的code,引數名按需而變
method: 'POST', //介面訪問方式
header: { 'Content-type': 'application/x-www-form-urlencoded' },
success: function (res) {
wx.setStorageSync('myOpenid', res.data.openid); //儲存openid
var res = {
status: 200,
data: res.data.openid
}
resolve(res);
}
});
} else {
console.log('獲取使用者登入態失敗!')
reject('error');
}
}
})
});
},
/*-- 這是獲取openid的函式-END --*/
globalData: {
userInfo:'',
},
})
- index.js
const app = getApp()
Page({
onLoad: function (options) {
let that = this;
app.getOpenid().then(function (res) {
if (res.status == 200) {
wx.request({
url: 'test01.html',
data: { 'openid': wx.getStorageSync('myOpenid'), },
header: { 'content-type': 'application/x-www-form-urlencoded' },
method: 'GET',
success: function (res) {
//這裡就可以拿到登入的狀態了,然後根據具體需求具體操作
}
})
} else {
console.log(res.data);
}
});
}
})