H5獲取OpenID的方法

一、H5獲取OpenID

獲取OpenID是在H5頁面進行的開發中比較重要的一步,由於OpenID是標識用戶身份的唯一標識符,所以有了OpenID之後,在之後的用戶追蹤、數據分析等方面都會極大方便。

以微信H5頁面為例,獲取OpenID的方式一般是通過授權登錄的方式,具體實現方式如下:

// 公眾號appid
const APPID = 'your_appid';

// 授權登錄地址
const url = encodeURIComponent(window.location.href);

// 發送請求,獲取access_token
axios.get(`https://api.weixin.qq.com/sns/oauth2/access_token?appid=${APPID}&secret=${SECRET}&code=${code}&grant_type=authorization_code`)
    .then(res => {
        const openid = res.data.openid;
        // ...此處可進行後續邏輯處理
    });

二、H5獲取OpenID時必須跳轉頁面嗎

其實,H5獲取OpenID時,通常是需要在跳轉頁面後,通過code來獲取access_token,再從access_token中獲取OpenID。但是,如果是在微信內置瀏覽器中進行H5開發,可以通過JS-SDK中的介面來直接獲取OpenID,無需跳轉:

// 公眾號appid
constAPPID = 'your_appid';

// 通過微信JS-SDK獲取OpenID
wx.ready(function() {
    wx.getUserInfo({
        success: function(res) {
            const openid = res.data.openid;
            // ...此處可進行後續邏輯處理
        }
    });
});

三、H5獲取OpenID appid

在獲取OpenID之前,需要先獲得公眾號(或小程序)的appid,並在開發過程中進行使用。如果您還沒有自己的公眾號或小程序,請儘快前往微信公眾平台進行申請,申請後可以在開發文檔中獲取相關的appid。

四、H5獲取位置信息

通過Geolocation API,可以在H5頁面中獲取到用戶當前所在的位置信息,具體代碼如下:

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
        const latitude = position.coords.latitude; // 經度
        const longitude = position.coords.longitude; // 緯度
        // ...此處可進行後續邏輯處理
    });
} else {
    alert('您的瀏覽器不支持獲取位置信息,請升級瀏覽器版本!');
}

五、H5獲取當前地理位置

通過微信JS-SDK,可以在H5頁面中獲取到當前位置的地理信息(即所在城市等信息),具體代碼如下:

// 獲取地理位置
wx.ready(function() {
    wx.getLocation({
        type: 'wgs84',
        success: function (res) {
            var latitude = res.latitude; // 緯度,浮點數,範圍為90 ~ -90
            var longitude = res.longitude; // 經度,浮點數,範圍為180 ~ -180。
            // ...此處可進行後續邏輯處理
        }
    });
});

六、H5獲取手機號碼

為了更好地了解用戶行為,H5頁面有時需要獲取用戶手機號碼。微信提供了一個便捷的介面來獲取用戶的手機號碼,代碼如下:

wx.ready(function() {
    wx.checkSession({
      success: function() {
        wx.request({
          url: 'https://api.weixin.qq.com/wxa/getphonenumber?access_token=ACCESS_TOKEN',
          data: {
            encryptedData: "",
            iv: ""
          },
          method: 'GET',
          success: function(res){
              const phoneNumber = res.data.phoneNumber;
              // ...此處可進行後續邏輯處理
            }
        });
      },
      fail: function() {
        wx.login({
          success: function(res) {
            if (res.code) {
              wx.request({
                url: 'https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=' + res.code + '&grant_type=authorization_code',
                success: function(res) {
                  // 保存session_key,後面解密手機號時使用
                  session_key = res.data.session_key;
                }
              });
            } else {
              console.log('登錄失敗!' + res.errMsg)
            }
          }
        })
      }
    });
});

七、H5獲取設備信息

如果需要在H5頁面中獲取設備信息,可以通過window.navigator.userAgent來獲取相關信息,代碼如下:

const userAgent = window.navigator.userAgent;
const isMobile = /Mobile/i.test(userAgent); // 是否為移動設備
const isAndroid = /Android/i.test(userAgent); // 是否為Android系統
const isIOS = /iPhone|iPad|iPod/i.test(userAgent); // 是否為iOS系統
const isWechat = /MicroMessenger/i.test(userAgent); // 是否為微信瀏覽器
const isMQQBrowser = /MQQBrowser/i.test(userAgent); // 是否為QQ瀏覽器
const isQQ = /\bQQ\b/i.test(userAgent); // 是否為QQ客戶端
// ...此處可進行後續邏輯處理

八、H5獲取微信用戶手機號

通過微信JS-SDK,還可以獲取用戶的微信號碼,具體代碼如下:

wx.ready(function() {
    wx.checkSession({
        success: function() {
            wx.request({
                url: 'https://api.weixin.qq.com/wxa/getphonenumber?access_token=ACCESS_TOKEN',
                data: {
                    encryptedData: "",
                    iv: ""
                },
                method: 'GET',
                success: function(res){
                    const phoneNumber = res.data.phoneNumber;
                    // ...此處可進行後續邏輯處理
                }
            });
        },
        fail: function() {
            wx.login({
                success: function(res) {
                    if (res.code) {
                        wx.request({
                            url: 'https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=' + res.code + '&grant_type=authorization_code',
                            success: function(res) {
                                // 保存session_key,後面解密手機號時使用
                                session_key = res.data.session_key;
                            }
                        });
                    } else {
                        console.log('登錄失敗!' + res.errMsg)
                    }
                }
            })
        }
    });
});

九、H5獲取微信頭像和昵稱

要獲取微信用戶的頭像和昵稱,可以調用微信JS-SDK中的介面,代碼如下:

wx.ready(function() {
    wx.getUserInfo({
        success: function(res) {
            const nickname = res.nickname;
            const headimgurl = res.headimgurl;
            // ...此處可進行後續邏輯處理
        }
    });
});

十、H5獲取手機設備唯一標識

在H5頁面中,要獲取手機設備的唯一標識符,可以通過設備號來進行獲取,代碼如下:

const deviceId = window.localStorage.getItem('deviceId');
if(!deviceId){
    const uuid = [];
    const str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    for (let i = 0; i < 32; i++) {
        uuid[i] = str.substr(Math.floor(Math.random() * 62), 1);
    }
    uuid[12] = '4';
    uuid[16] = str.substr((uuid[16] & 3) | 8, 1);
    deviceId = uuid.join('');
    window.localStorage.setItem('deviceId', deviceId);
}
// ...此處可進行後續邏輯處理

原創文章,作者:RRNK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/142339.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RRNK的頭像RRNK
上一篇 2024-10-11 11:41
下一篇 2024-10-11 11:41

相關推薦

  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 用不同的方法求素數

    素數是指只能被1和自身整除的正整數,如2、3、5、7、11、13等。素數在密碼學、計算機科學、數學、物理等領域都有著廣泛的應用。本文將介紹幾種常見的求素數的方法,包括暴力枚舉法、埃…

    編程 2025-04-29
  • 使用Vue實現前端AES加密並輸出為十六進位的方法

    在前端開發中,數據傳輸的安全性問題十分重要,其中一種保護數據安全的方式是加密。本文將會介紹如何使用Vue框架實現前端AES加密並將加密結果輸出為十六進位。 一、AES加密介紹 AE…

    編程 2025-04-29
  • Python學習筆記:去除字元串最後一個字元的方法

    本文將從多個方面詳細闡述如何通過Python去除字元串最後一個字元,包括使用切片、pop()、刪除、替換等方法來實現。 一、字元串切片 在Python中,可以通過字元串切片的方式來…

    編程 2025-04-29
  • 用法介紹Python集合update方法

    Python集合(set)update()方法是Python的一種集合操作方法,用於將多個集合合併為一個集合。本篇文章將從以下幾個方面進行詳細闡述: 一、參數的含義和用法 Pyth…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟體。在VB中,有許多不同的方法可以運行程序,包括編譯器、發布程序以及命令行。在本文中…

    編程 2025-04-29

發表回復

登錄後才能評論