濮阳杆衣贸易有限公司

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

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

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

為什么要獲取小程序的 openid

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

小程序獲取 openid 的流程

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

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

注意事項

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

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

請求地址為:

GET https://api.weixin.qq.com/sns/jscode2session?appid=APPIDsecret=SECRETjs_code=JSCODEgrant_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 需要我們登錄微信公總平臺 里面找

 

小程序代碼演示

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

!--index.wxml-->
view class="container">
 button bindtap="onGetOpenId">點擊獲取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
}

運行結(jié)果

運行代碼,在小程序中點擊:

結(jié)果:

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

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

標(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)信息告之我們,我們將及時溝通與處理。本站內(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)民參考!
  • 推薦文章
    张家口市| 南通市| 玉环县| 永顺县| 修文县| 肃南| 广饶县| 临沂市| 无棣县| 万荣县| 法库县| 昌乐县| 黄陵县| 永泰县| 大足县| 岢岚县| 兴仁县| 清涧县| 连平县| 寻乌县| 三台县| 邵东县| 彩票| 普安县| 阳西县| 焦作市| 高密市| 宣威市| 义乌市| 建德市| 吉安市| 宁波市| 西丰县| 凤阳县| 万荣县| 大同县| 比如县| 崇文区| 南平市| 青田县| 桃园市|