日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【坑爹微信】微信开发基础 --- 微信快捷登陆问题解决

發(fā)布時間:2025/5/22 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【坑爹微信】微信开发基础 --- 微信快捷登陆问题解决 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄 List

  • 那一抹淡淡的憂傷—–微信開發(fā)基礎(chǔ)
  • 用純js是不可能用純js了,這輩子都不用純js了 —– 微信JSSDK開發(fā)以及問題解答
  • 要你命3000 —— 微信支付開發(fā)系列問題解決
  • 導語

    微信快捷登陸是基于OAuth2.0 (如果想深入了解,點擊查看博主的另一篇博文)和OPenid 等多種機制融合在一起的一種第三方授權(quán)協(xié)議接口的簡稱。
    引用微信自己的話來講快捷登陸的作用就是:如果用戶在微信客戶端中訪問第三方網(wǎng)頁,公眾號可以通過微信網(wǎng)頁授權(quán)機制,來獲取用戶基本信息,進而實現(xiàn)業(yè)務邏輯

    簡而言之就是拿著微信客戶的資料入我們自己的系統(tǒng)完成我們自己的業(yè)務邏輯,這樣做的好處是減少了用戶注冊登陸等環(huán)節(jié)的麻煩事,并且基于微信內(nèi)置游覽器能很好的延展我們要展現(xiàn)的業(yè)務功能,使操作流暢度增加。


    微信開發(fā)前準備

    這點準備其實你完全可以參考微信開發(fā)者文檔

    反正最后你得擁有以下這些:

  • Appid
  • Appsecret
  • Mchid
  • Key
  • 證書并且上傳至服務器
  • JSSDK 安全授權(quán)目錄配置好了
  • 支付安全目錄配置好了
  • 支付回調(diào)目錄配置好了
  • 注意: 1和2是最基礎(chǔ)的,你一定要有。后面的可以慢慢申辦。


    微信快捷登陸

    終于說到正題了

    首先我們要了解微信快捷登陸的步驟

    1 第一步:用戶同意授權(quán),獲取code
    2 第二步:通過code換取網(wǎng)頁授權(quán)access_token
    3 第三步:拉取用戶信息(需scope為 snsapi_userinfo)

    其實你完全可以參考微信開發(fā)者文檔

    我現(xiàn)在直接將實施步驟,直接上代碼

    第一步:用戶同意授權(quán),獲取code

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“該鏈接無法訪問”,請檢查參數(shù)是否填寫錯誤,是否擁有scope參數(shù)對應的授權(quán)作用域權(quán)限。

    warning “: 尤其注意:由于授權(quán)操作安全等級較高,所以在發(fā)起授權(quán)請求時,微信會對授權(quán)鏈接做正則強匹配校驗,如果鏈接的參數(shù)順序不對,授權(quán)頁面將無法正常訪問

    //拼接跳轉(zhuǎn)地址 $oauthUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $this->config['wechat_appid'] . '&redirect_uri=' . urlencode($customeUrl) . '&response_type=code&scope=snsapi_userinfo&state=' . $_SESSION['weixin']['state'] . '#wechat_redirect'; //跳轉(zhuǎn)換code header('Location:'.$oauthUrl);

    注意這里面的可選參數(shù)state,雖然微信官方標注這個state是可選參數(shù),但是事實告訴我,這個參數(shù)是必須加的,因為蘋果手機的防火墻會自動先進行一次請求,會讓你的code被使用而過期,所以只有驗證你給state是否是你當前給的再使用code才是正確的步驟,那么代碼改成:

    //真正意義上的超全局變量$GLOBALS['_SESSION']['weixin']['state'] = md5(uniqid());//先正則匹配掉以前客戶端可能存下的code$customeUrl = preg_replace('#&code=(\\w+)#', '', $this->config['site_url'] . $_SERVER['REQUEST_URI']);//拼接出要跳轉(zhuǎn)的URL來給微信(這里的state狀態(tài)值必須還是填上,因為蘋果手機的防火墻會自動先進行一次請求,會讓你的code被使用而過期)$oauthUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $this->config['wechat_appid'] . '&redirect_uri=' . urlencode($customeUrl) . '&response_type=code&scope=snsapi_userinfo&state=' . $_SESSION['weixin']['state'] . '#wechat_redirect';//進行下一步跳轉(zhuǎn)header('Location:'.$oauthUrl);

    第二步:通過code換取網(wǎng)頁授權(quán)access_token

    首先請注意,這里通過code換取的是一個特殊的網(wǎng)頁授權(quán)access_token,與基礎(chǔ)支持中的access_token(該access_token用于調(diào)用其他接口)不同。公眾號可通過下述接口來獲取網(wǎng)頁授權(quán)access_token。如果網(wǎng)頁授權(quán)的作用域為snsapi_base,則本步驟中獲取到網(wǎng)頁授權(quán)access_token的同時,也獲取到了openid,snsapi_base式的網(wǎng)頁授權(quán)流程即到此為止。

    //只有帶state的請求才是正式請求所以要先判斷if (isset($_GET['code']) && isset($_GET['state']) && ($_GET['state'] == $GLOBALS['_SESSION']['weixin']['state'])) {unset($_SESSION['weixin']);//根據(jù)拿的code來拿access_token$return = $this->https_request('https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->config['wechat_appid'] . '&secret=' . $this->config['wechat_appsecret'] . '&code=' . $_GET['code'] . '&grant_type=authorization_code');$jsonrt = $return;

    第三步:拉取用戶信息(需scope為 snsapi_userinfo)

    如果網(wǎng)頁授權(quán)作用域為snsapi_userinfo,則此時開發(fā)者可以通過access_token和openid拉取用戶信息了。

    $url='https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';//通過access_token和openid調(diào)用此接口獲得用戶詳細信息$res=$this->https_request($url);//下方寫上你的業(yè)務邏輯

    到這里整個流程走完。

    獲取整段代碼可以加qq 1577452412


    出現(xiàn)問題的解決

    我們排查錯誤先從前端表現(xiàn)來說

    如果你還沒有出現(xiàn)微信授權(quán)頁面,那就是第一步就錯了

    如果你出現(xiàn)了授權(quán)頁面,但是點擊后有錯誤那就是卡在第二步后面

    第一步出錯的:

    請排查

    1.APPID是否對應當前公眾號
    2.REDIRECT_URI 是否是正確的url 里面有沒有亂碼或者有沒有屏蔽掉&code這樣的參數(shù)
    3.snsapi_userinfo 只有這種模式的登陸才能出現(xiàn)快捷登陸授權(quán)頁面

    上面所有方法的調(diào)試都很簡單就是直接打印出當前的請求url 看看到底是啥

    第二步出錯的:

    請排查

    1.SECRET 是否是當前公眾號的
    2. CODE 是否過期(code只能使用一次,5分鐘未被使用自動過期。 )
    3. 必須保證跳轉(zhuǎn)url完整 檢查state=STATE 這個有沒有漏掉

    以上調(diào)試的方法直接打印請求結(jié)果就可以了

    第三步出錯的:

    1.access_token是否有效

    以上方法請參考 驗證access_token

    所有問題都可以加qq 1577452412來問我,共同進步

    總結(jié)

    以上是生活随笔為你收集整理的【坑爹微信】微信开发基础 --- 微信快捷登陆问题解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。