在调试字节小程序授权登录的时候,发现一直报错fail:not login;查看文档发现说是未在小程序登录平台登录????
what are you ???
这文档写的也太随意了吧,未在小程序平台登录,什么小程序平台啊,大哥。试了字节小程序开放平台登录,字节开发者平台登录!!! 然而都不是。
只能继续查阅文档,查社区,发现有几个小伙伴都有这个问题,但是没人贴解决方案。
解决方法
文档中提示需要在获取手机号前调用login,不然会刷新登录状态。晴天霹雳,因为是多端开发,微信和百度都是直接在获取授权的回调时调用的,也没注意这个地方。
先在用户点击授权之前获取到login()返回的code,code五分钟内有效,到期需要重新获取不然会解密失败,
可以在进入页面的时候就获取code存起来,用的时候直接拿,当过期的时候后台返回对应code码,重新调用login(),再提示用户重新授权登录
useEffect(() => {
/**@name 字节需要提前调用login获取code5分钟内有效*/
Taro.login({
success: function (res) {
if (res.code) {
setCode(res.code)
}
}
})
}, [])
const getPhoneNumber = (e) => {
if (code) {
let base64 = encryptionkey(loginParams)
let params = {
uri: API.LOGIN,
sign: base64,
}
fetch.fetch(API.URL,'post', params).then(item => {
if(item.code == '0000'){
}else if(item.code == '0009'){
/**@name code5分钟内有效,接口返回code0009解密失败,需重新获取*/
Taro.login({
success: function (res) {
Taro.showToast({
title:'字节授权失败,请重试',
icon:'noen',
duration:2000
})
if (res.code) {
setCode(res.code)
}
}
})
}
}