微信公眾號的code,微信授權


微信授權:微信本身有一套授權機制,我們需要做的就是在一個url里面傳相應的參數,然后在微信的開發者工具或者微信自帶的瀏覽器訪問這個url就可以在微信授權跳轉之后的url里面拿到code,然后后台就可以利用code獲取用戶相關的信息。比如openid,token等。例子如下

https://open.weixin.qq.com/connect/oauth2/authorize?

appid=“填寫你自己的appid”&
redirect_uri=“填寫你自己的encode之后的url”
&response_type=code&scope=snsapi_base&state=123;

其中redirect_uri=后面的參數就是你自己的url經過encode轉碼得到的。這個轉碼的url是你在微信授權之后跳轉的鏈接。

上面整個url在微信上訪問之后會跳轉到你自己的url然后在后面帶上code=“xxxxxx”的參數等,其中code需要用來獲取用戶信息。

這個code因為在url里面可以通過獲取當前瀏覽器的url來獲取到,獲取方法如下:

getQueryString(name) {
  let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
  let r = window.location.search.substr(1).match(reg);
  if (r != null) return unescape(r[2]);
  return null;
}

this.getQueryString("code");這樣子調用就可以了。然后后續就是從服務器獲取用戶信息,其中token,openid是不變的,以后都需要使用需要保存。提醒一下由於code是每次使用之后就無效了的。所以code無需保存。

至此微信授權完成

 

采坑記錄:

因為前后端分離,所以為了在當前頁面授權之后並且跳轉到該頁面,所以需要讓window.location.href="xxxxxx",這個url是微信授權的url,里面的參數是該頁面的鏈接地址經過encode轉碼的。

這里有一個問題:如果你先授權再去拿code會造成頁面需要的在該頁面跳轉。避免辦法和誤區講解如下:

  由於這是微信公眾號的入口頁面,所以后台是配置了這個頁面的鏈接的。所以在微信公眾號進入這個頁面是直接授權了的。這個時候去獲取code就可以了。然后進行后續操作。如果后台授權有問題,可以進行如下:同樣先獲取code,判斷code是否存在,然后再去授權,等跳轉回該頁面的時候就可以獲取code了。這樣避免了頁面循環跳轉


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM