国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Golang通過小程序獲取微信openid的方法示例

瀏覽:65日期:2022-07-13 11:34:05

為什么要獲取小程序的 openid

在開發(fā)微信小程序的過程中,小程序可以通過微信官方提供的登錄能力方便地獲取微信提供的用戶身份標(biāo)識,快速建立小程序內(nèi)的用戶體系。那么這個用戶身份標(biāo)識就是 openid。

小程序獲取 openid 的流程

那么小程序獲取 openid 的流程具體如下,這里我簡化了一下,因為我們只需要獲取到 openid 即可,具體可以參考 這里

Golang通過小程序獲取微信openid的方法示例

我們需要在小程序中調(diào)用 wx.login() 獲取 code 碼,然后將這個 code 碼發(fā)送給后端,后端帶著這個 code 碼和 appid,appsecret 向微信接口發(fā)起 http 請求獲取 openid。

注意事項

在開發(fā)的小程序中的 AppID 一定要和后端使用的 AppID 保持一致,否則會獲取 openid 失敗

Golang通過小程序獲取微信openid的方法示例

我們請求的微信 API 為 auth.code2Session ,

請求地址為:

GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

所需的四個參數(shù)為:

屬性 類型 默認(rèn)值 必填 說明 appid string 是 小程序 appId secret string 是 小程序 appSecret js_code string 是 登錄時獲取的 code grant_type string 是 授權(quán)類型,此處只需填寫 authorization_code

js_code 就是我們通過 wx.login 得到的 code,grant_type 為 authorization_code,只剩下 appid 和 secret 需要我們登錄微信公總平臺 里面找

Golang通過小程序獲取微信openid的方法示例

小程序代碼演示

為了方便操作,我們在 index 頁面編寫了一個 button,通過 button 觸發(fā)事件

<!--index.wxml--><view class='container'> <button bindtap='onGetOpenId'>點(diǎn)擊獲取openid</button></view>

然后編寫事件函數(shù):

//index.jsPage({ onGetOpenId() { wx.login({ success: res => { if (res.code) { wx.request({ url: 'http://localhost:2020/openid', method: 'POST', data: { code: res.code }, success: res => { console.log(res); } }); } } }); }});

那么,在小程序中發(fā)送 http 請求強(qiáng)制要求地址必須為 https,由于我們在開發(fā)中,我們可以把強(qiáng)制 https 的設(shè)置關(guān)閉

Golang通過小程序獲取微信openid的方法示例

Go 語言后端代碼演示

小程序發(fā)過來的數(shù)據(jù)和去微信 API 獲取的數(shù)據(jù)都是放在 http body 里,所以我們要從 body 獲取

package mainimport ( 'encoding/json' 'fmt' 'net/http')func main() { http.HandleFunc('/openid', getOpenID) http.ListenAndServe(':2020', nil)}func getOpenID(writer http.ResponseWriter, request *http.Request) { if request.Method != http.MethodPost { return } var codeMap map[string]string err := json.NewDecoder(request.Body).Decode(&codeMap) if err != nil { return } defer request.Body.Close() code := codeMap['code'] openid, err := sendWxAuthAPI(code) if err != nil { return } fmt.Println('my openid', openid)}const ( code2sessionURL = 'https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code' appID = '你的AppID' appSecret = '你的AppSecret')func sendWxAuthAPI(code string) (string, error) { url := fmt.Sprintf(code2sessionURL, appID, appSecret, code) resp, err := http.DefaultClient.Get(url) if err != nil { return '', err } var wxMap map[string]string err = json.NewDecoder(resp.Body).Decode(&wxMap) if err != nil { return '', err } defer resp.Body.Close() return wxMap['openid'], nil}

運(yùn)行結(jié)果

運(yùn)行代碼,在小程序中點(diǎn)擊:

Golang通過小程序獲取微信openid的方法示例

結(jié)果:

Golang通過小程序獲取微信openid的方法示例

到此這篇關(guān)于Golang通過小程序獲取微信openid的方法示例的文章就介紹到這了,更多相關(guān)Golang獲取openid內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: 微信
相關(guān)文章:
主站蜘蛛池模板: 国产三级视频网站 | 久久五月女厕所一区二区 | 91香蕉国产在线观看免费永久 | 99久久精品国产一区二区小说 | 国产日韩精品一区在线不卡 | 性做久久久久久久免费看 | 久久免费视频2 | 亚洲欧美另类日本久久影院 | 欧美美女色 | 91久久国产综合精品女同国语 | 国产夫妇精品自在线 | 美国三级在线 | 国产区网址 | 色视频网站大全免费 | 日韩 国产 欧美视频一区二区三区 | 亚洲精品国产高清不卡在线 | 伊人手机视频 | 国产专区在线 | 国产第一页久久亚洲欧美国产 | 日韩精品另类天天更新影院 | 亚洲 欧美 精品 | 一级毛片免费播放 | 高清日本在线成人免费视频 | 国产成人精品aaaa视频一区 | 乱系列中文字幕在线视频 | 一级免费看片 | 午夜日韩精品 | 国产性夜夜春夜夜爽30 | 一级在线观看视频 | 国产一区中文字幕在线观看 | 伊人久久91 | 欧美日韩视频一区三区二区 | 欧美日韩国产亚洲一区二区 | 黄色片三级网站 | 亚洲欧美日韩高清综合678 | 偷拍第1页 | 成人男女网18免费看 | 99在线视频网站 | 成年人免费视频观看 | 国产成人在线视频免费观看 | 日本天堂免费 |