欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年03月24日 14:22:03   作者:Rollover  
這篇文章主要介紹了Golang通過小程序獲取微信openid的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

為什么要獲取小程序的 openid

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

小程序獲取 openid 的流程

那么小程序獲取 openid 的流程具體如下,這里我簡(jiǎn)化了一下,因?yàn)槲覀冎恍枰@取到 openid 即可,具體可以參考 這里

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

注意事項(xiàng)

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

我們請(qǐng)求的微信 API 為 auth.code2Session ,

請(qǐng)求地址為:

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

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

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

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

 

小程序代碼演示

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

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

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

//index.js
Page({
 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 請(qǐng)求強(qiáng)制要求地址必須為 https,由于我們?cè)陂_發(fā)中,我們可以把強(qiáng)制 https 的設(shè)置關(guān)閉

 

Go 語(yǔ)言后端代碼演示

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

package main

import (
  "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)擊:

結(jié)果:

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

相關(guān)文章

  • Go語(yǔ)言使用templ實(shí)現(xiàn)編寫HTML用戶界面

    Go語(yǔ)言使用templ實(shí)現(xiàn)編寫HTML用戶界面

    templ是一個(gè)在 Go 中編寫 HTML 用戶界面的語(yǔ)言,使用 templ,我們可以創(chuàng)建可呈現(xiàn) HTML 片段的組件,下面就跟隨小編一起了解一下具體的實(shí)現(xiàn)方法吧
    2023-12-12
  • Golang中map的深入探究

    Golang中map的深入探究

    Go中Map是一個(gè)KV對(duì)集合,下面這篇文章主要給大家介紹了關(guān)于Golang中map探究的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-09-09
  • Go語(yǔ)言常見錯(cuò)誤接口污染解決分析

    Go語(yǔ)言常見錯(cuò)誤接口污染解決分析

    這篇文章主要為大家介紹了Go語(yǔ)言常見錯(cuò)誤接口污染解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • go語(yǔ)言單元測(cè)試基準(zhǔn)測(cè)試及表驅(qū)動(dòng)測(cè)試示例詳解

    go語(yǔ)言單元測(cè)試基準(zhǔn)測(cè)試及表驅(qū)動(dòng)測(cè)試示例詳解

    這篇文章主要為大家介紹了go語(yǔ)言單元測(cè)試基準(zhǔn)測(cè)試及表驅(qū)動(dòng)測(cè)試示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • golang雪花算法實(shí)現(xiàn)64位的ID的示例代碼

    golang雪花算法實(shí)現(xiàn)64位的ID的示例代碼

    本文展示了使用Go語(yǔ)言實(shí)現(xiàn)雪花算法生成64位ID的示例代碼,雪花算法通過當(dāng)前時(shí)間戳、工作節(jié)點(diǎn)ID、數(shù)據(jù)中心ID和序列號(hào)生成唯一的64位ID,確保在分布式系統(tǒng)中的唯一性和時(shí)間順序性,感興趣的可以了解一下
    2024-09-09
  • Golang實(shí)現(xiàn)按行讀取文件的方法小結(jié)

    Golang實(shí)現(xiàn)按行讀取文件的方法小結(jié)

    按行讀取文件相較于一次性載入,有著很多優(yōu)勢(shì),如內(nèi)存效率高、處理速度快、實(shí)時(shí)性高等,本文主要介紹了Golang按行讀取文件的相關(guān)方法,希望對(duì)大家有所幫助
    2024-02-02
  • golang如何去除多余空白字符(含制表符)

    golang如何去除多余空白字符(含制表符)

    這篇文章主要介紹了golang去除多余空白字符(含制表符)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2021-04-04
  • Go語(yǔ)言學(xué)習(xí)之反射的用法詳解

    Go語(yǔ)言學(xué)習(xí)之反射的用法詳解

    反射指的是運(yùn)行時(shí)動(dòng)態(tài)的獲取變量的相關(guān)信息。本文將為大家詳細(xì)介紹Go語(yǔ)言中反射的用法,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-04-04
  • go語(yǔ)言靜態(tài)庫(kù)的編譯和使用方法

    go語(yǔ)言靜態(tài)庫(kù)的編譯和使用方法

    這篇文章主要介紹了go語(yǔ)言靜態(tài)庫(kù)的編譯和使用方法,本文以windows平臺(tái)為例,通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 輕松讀懂Golang中的數(shù)組和切片

    輕松讀懂Golang中的數(shù)組和切片

    這篇文章主要給大家介紹了關(guān)于Golang中數(shù)組和切片的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者Golang具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03

最新評(píng)論