前端通過js獲取微信公眾號用戶的唯一標識符openId


微信公眾號程序開發的時候,獲取用戶信息的時候,需要用到用戶的openId,openId是微信用戶的唯一標識符,這個操作可以后台實現也可以前端實現,之前項目里是通過后台來獲取的,好像用到了一些三方的包,然后我抽空看了一下微信開發文檔,發現通過前端獲取openId也很簡單,如下所示:

 

一、先附上微信公眾號開發文檔 https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Login/Development_Guide.html

 

二、獲取openId

第一步,先獲取code,大致可以理解為每次點擊微信公眾號的不同菜單欄,都會產生不同的code,但是同一個用戶不同的code,又對應着唯一的openId

    通過自定義的路徑,可以獲取到code,注意code只能用一次,使用過就失效了,鏈接為

https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxxxxxxxxxx&redirect_uri=http%3a%2f%2f127.0.0.1&response_type=code&scope=snsapi_userinfo#wechat_redirect

其中appid為開發者賬號或者微信平台的的appid,redirect_uri為跳轉的重定向地址(地址包含特殊符號,需要轉碼才行),其他為默認參數,不用考慮,注意,重定向地址只能使用80端口

請求地址后會重定向到一個新的地址,地址的參數中會有code這個參數,如下所示

http://127.0.0.1/?url=index&code=xxxxxxxxxxxxxxxxxxxxxxxxxxxx&state=

然后直接獲取問號傳的參數code即可(vue可以使用this.$route.query.code獲取)

 

第二步:根據code獲取openId,請求地址為

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

       其中appid和secret為開發者賬號或者微信平台的的appid和appsecret,code為第一步獲取到的code,最后一個參數為默認參數,不用考慮

如下所示

 this.$axios.get(`https://api.weixin.qq.com/sns/oauth2/access_token?appid=xxxxxxxxxxxxxxxxxxxx&secret=xxxxxxxxxxxxxxx&code=xxxxxxxxx&grant_type=authorization_code`).then(res => { console.log(res); });

 

然后就可以返回openid了

 

 

 

注意:如果出現跨域問題,使用proxy代理即可

 

 

如果返回值錯誤,對照開發指南的錯誤表,解決錯誤即可

 

 

嗯,就醬~~


免責聲明!

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



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