主頁 > 知識(shí)庫 > Golang通過小程序獲取微信openid的方法示例

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

熱門標(biāo)簽:福州鐵通自動(dòng)外呼系統(tǒng) 長沙ai機(jī)器人電銷 地圖標(biāo)注測試 賺地圖標(biāo)注的錢犯法嗎 烏魯木齊人工電銷機(jī)器人系統(tǒng) 智能電銷機(jī)器人營銷 澳門防封電銷卡 濮陽自動(dòng)外呼系統(tǒng)代理 廣東語音外呼系統(tǒng)供應(yīng)商

為什么要獲取小程序的 openid

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

小程序獲取 openid 的流程

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

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

注意事項(xiàng)

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

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

請求地址為:

GET https://api.weixin.qq.com/sns/jscode2session?appid=APPIDsecret=SECRETjs_code=JSCODEgrant_type=authorization_code

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

屬性 類型 默認(rèn)值 必填 說明
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) 里面找

 

小程序代碼演示

為了方便操作,我們在 index 頁面編寫了一個(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 請求強(qiáng)制要求地址必須為 https,由于我們在開發(fā)中,我們可以把強(qiáng)制 https 的設(shè)置關(guān)閉

 

Go 語言后端代碼演示

小程序發(fā)過來的數(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=%ssecret=%sjs_code=%sgrant_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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 微信公眾平臺(tái)實(shí)現(xiàn)獲取用戶OpenID的方法
  • 微信小程序授權(quán)獲取用戶詳細(xì)信息openid的實(shí)例詳解
  • 微信公眾號(hào)支付(一)如何獲取用戶openId
  • 微信小程序 獲取微信OpenId詳解及實(shí)例代碼
  • .NET微信公眾號(hào)獲取OpenID和用戶信息
  • 微信小程序開發(fā)一鍵登錄 獲取session_key和openid實(shí)例
  • 微信小程序如何獲取openid及用戶信息
  • 微信小程序獲取用戶openid的實(shí)現(xiàn)
  • 微信小程序 獲取session_key和openid的實(shí)例
  • 微信小程序獲取用戶openId的實(shí)現(xiàn)方法
  • ASP.NET Core2靜默獲取微信公眾號(hào)的用戶OpenId實(shí)例代碼

標(biāo)簽:調(diào)研邀請 太原 貴陽 阿克蘇 廣西 西雙版納 慶陽 德州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Golang通過小程序獲取微信openid的方法示例》,本文關(guān)鍵詞  Golang,通,過小,程序,獲取,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Golang通過小程序獲取微信openid的方法示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于Golang通過小程序獲取微信openid的方法示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章