支付寶小程序serverless---獲取用戶信息(頭像)並保存到雲數據庫
博客說明
文章所涉及的資料來自互聯網整理和個人總結,意在於個人學習和經驗匯總,如有什么地方侵權,請聯系本人刪除,謝謝!
我又回來了,這是我第三次修改啦。
使用serverless
首先我們需要在app.js里面引入serverless
然后再在我們的邏輯代碼里面調用登錄的接口
獲取用戶授權
先獲取用戶授權的接口
這個是支付寶文檔的地址:https://opendocs.alipay.com/mini/api/openapi-authorize
// 先獲取用戶授權(如用戶未授權會彈窗喚起授權窗口)
const res = await app.serverless.user.authorize({
authProvider: 'alipay_openapi'
}).catch(console.error);
if (res && res.success) {
console.log('授權成功');
const userInfo = await app.serverless.user.getInfo({
authProvider: 'alipay_openapi',
}).catch(console.error);
if (userInfo.success) {
console.log('getUserInfo res', userInfo);
app.user = userInfo.result.user;
this.setData({ user: userInfo.result.user });
}
調用獲取頭像接口
獲取用戶頭像的接口
地址:https://opendocs.alipay.com/mini/api/ch8chh
my.getAuthUserInfo已經不能使用了,那么我們就用my.getOpenUserInfo,但是my.getOpenUserInfo是有要求的,它需要用戶主動觸發,而不是直接調用api來詢問。
按鈕
<button a:if="{{canIUseAuthButton}}" open-type="getAuthorize" onGetAuthorize="onGetAuthorize" onError="onAuthError" scope='userInfo'> 會員基礎信息授權 </button>
js代碼
這個是真的很多坑,特別是兩層response,要使用的話,下面是解決了坑之后的
/**
* 授權成功事件
*/
onGetAuthorize() {
var that = this;
my.getOpenUserInfo({
fail: (res) => {
this.setData({ result: JSON.parse(res.response).response});
},
success: (res) => {
this.setData({ result: JSON.parse(res.response).response});
console.log(that.data.result);
}
});
},
保存我們的用戶信息(雲函數)
module.exports = async (ctx) => {
const User = await ctx.mpserverless.db.collection('user').insertOne({
userinfo:ctx.args.data
})
.then(res => {
return res;
})
.catch(console.error);
return { User };
};
測試結果
開發者工具控制台
雲數據庫
這樣的話我們的數據就插入成功啦!
感謝
支付寶
以及勤勞的自己