自拍亚洲一区欧美另类,亚洲成人影院,亚洲午夜久久久久妓女影院,最近中文字幕高清中文字幕无,亚洲熟妇av一区二区三区漫画

互聯(lián)網(wǎng)知識

精準傳達 ? 價值共享

洞悉互聯(lián)網(wǎng)前沿資訊,探尋網(wǎng)站營銷規(guī)律

人人商城小程序用戶反復(fù)授權(quán)的問題

作者:狐靈科技 | 2020-04-02 12:55 |點擊:

問題:在微擎的人人商城的小程序里面,會出現(xiàn)用戶反復(fù)授權(quán)不成功的情況

分析:授權(quán)的流程是,一個未進入過小程序界面的用戶進入界面后,wx.getUserinfo會獲取用戶的openid創(chuàng)建一個用戶,并且存在cache里面,然后再點進入這個會員中心界面,會判斷你的這個用戶是無效的,然后進入授權(quán)界面,授權(quán)界面授權(quán)后,在進入首頁,首頁再會調(diào)用wxapp.auth這個api接口去修改這個openid的會員昵稱,圖片等信息

關(guān)鍵點:后臺數(shù)據(jù)庫中,shop_member表中,存在一部分為sns_wa_sns_wa_xxxxx這一類的openid,這一類的openid是錯誤的,導(dǎo)致這一部分用戶就一直重復(fù)在首頁更新數(shù)據(jù)更新不了,進入用戶后,再授權(quán),授權(quán)進入首頁還是沒法更新 這樣一種死循環(huán)的情況

注意:如果你的數(shù)據(jù)庫中不存在sns_wa_sns_wa_xxx之類的前綴重復(fù)openid的話,那么跟下面的解決方案沒得太大關(guān)系.

死循環(huán)的原因:用戶進入小程序首頁授權(quán)后,創(chuàng)建了一個sns_wa_xxx的openid并且存入了緩存,然后再一次進入首頁的時候,會觸發(fā)check()方法,check方法會把這個sns_wa_xxx再加上sns_wa前綴,組成了sns_wa_sns_wa_xxx的openid來查詢,查詢不到,然后后面又會觸發(fā)什么auth方法驗證,然后就導(dǎo)致了一系列的錯誤.

解決關(guān)鍵點:

addons\ewei_shopv2\plugin\app\core\mobile\wxapp.php(這個是小程序調(diào)用的方法API后臺接口) 在這個里面有兩個function,一個是auth()->更新和創(chuàng)建用戶的方法,另一個是check()->檢查會員數(shù)據(jù)有效性的方法

auth()方法排除重復(fù)的sns_wa前綴

check()方法排除重復(fù)的sns_wa前綴

//更新:

//注:小程序中pages/messages/auth/index.js 這個是用戶的授權(quán)js

//注:如果對于js比較熟悉的話,可以直接修改小程序的授權(quán)頁面,用授權(quán)頁面獲取到用戶的openid,nickename之類的信息后,然后寫一個API接口來驗證你的信息是否注冊,注冊過就不管,把個人昵稱和頭像更新一下. 
修改這個pages/messages/auth/index.js

var t = getApp();
var e = require("../../../utils/core.js");//先加載require.js組件
//修改bind 方法 在bind中如果獲取到了用戶信息,就直接傳參到借口
bind: function() {

var t = this, e = setInterval(function() {
wx.getSetting({
success: function(n) {
var a = n.authSetting["scope.userInfo"];
//微信調(diào)用用戶信息的api接口
wx.getUserInfo({
success:function(info){
var userinfo=info.userInfo;
//console.log(userinfo);
var params={
data: userinfo,
iv: info.iv,
};
//調(diào)用下面的js方法
var res_code=update_info(params);
//方法成功,回到用戶界面
if(res_code==1){
wx.navigateTo({
url: 'pages/member/index/index',
})
}


}
});

//這里的update_info的js方法 作用是獲取到了用戶信息后,調(diào)用PHP的api接口,傳遞用戶參數(shù),然后php獲取用戶參數(shù)后根據(jù)openid更新member表的用戶信息
function update_info(params){
e.get("wxapp/update_info",params,function(res){
return res.code;
})
}

//相關(guān)的PHP后臺接口方法(文件地址:addons\ewei_shopv2\plugin\app\core\mobile\wxapp.php  接口調(diào)用時就用wxapp/update_info) 

// 微信小程序更新個人信息(頭像,昵稱,等等)
  public function update_info(){
global $_GPC;
global $_W;
$openid=$_GPC['openid'];
$data = $_GPC["data"];
$return_data=array();

$member=m('member')->getMember($openid);

if($member['nickname']===$data['nickName']){
$return_data=array("code"=>1,"msg"=>"數(shù)據(jù)一樣,無需修改");
app_json($return_data,$member['openid']);
}


//如果存在用戶信息不為空,且得到的用戶信息和數(shù)據(jù)庫信息不匹配,進行更新
if(!empty($member)&&strlen($data['avatarUrl'])>1&&$data['nickName']!==$member['nickname']){
$updateData = array(
'nickname' =>$data['nickName'],
'avatar' =>$data['avatarUrl'],
'gender'=>$data['gender']
);
pdo_update('ewei_shop_member', $updateData, array('id' => $member['id'], 'uniacid' => $member['uniacid']));
$data['id'] = $member['id'];
$data['uniacid'] = $member['uniacid'];

$return_data=array("code"=>1,"msg"=>"修改成功");
}else{
$return_data=array("code"=>0,"msg"=>"無數(shù)據(jù)或者其他錯誤,修改失敗");
}

 

注:有些朋友問頁面彈框出現(xiàn)了check sign fail怎么辦,但凡是進入頁面后彈微信自帶的那種提示框,一般都是配置問題,請檢查你的config文件中的什么appid,appsecret之類的,跟業(yè)務(wù)代碼沒得太大關(guān)系,不知道怎么辦把錯誤黏貼拿去百度.

如沒特殊注明,文章均為狐靈科技原創(chuàng),轉(zhuǎn)載請注明?? "人人商城小程序用戶反復(fù)授權(quán)的問題
多一份免費策劃方案,總有益處。

請直接添加技術(shù)總監(jiān)微信聯(lián)系咨詢

網(wǎng)站設(shè)計 品牌營銷

多一份參考,總有益處

聯(lián)系狐靈科技,免費獲得專屬《策劃方案》及報價

咨詢相關(guān)問題或預(yù)約面談,可以通過以下方式與我們聯(lián)系

業(yè)務(wù)熱線:15082661954 / 大客戶專線:15523356218