日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 获取企业号用户,微信企业号 获取用户信息(示例代码)

發布時間:2025/5/22 php 90 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 获取企业号用户,微信企业号 获取用户信息(示例代码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

業務操作最基礎的一個功能是獲取訪客的身份,傳統的獲取方式是提供一個登錄頁面用以訪客登錄。

在微信企業號中,用戶在微信中訪問頁面時,可以根據相關API獲取此用戶的微信賬號信息,以此來匹配業務服務器存儲的相關用戶信息。

目錄

1. 獲取步驟

1.1 介紹

企業號的網頁開發,說白了就是移動端web開發,特殊點在于如何獲取微信用戶的身份信息。

在企業號中可以進行如下步驟獲取微信用戶信息:

訪問一個業務頁面時,可通過OAuth驗證接口獲取此用戶信息 → 根據code獲取userId → 根據userId獲取微信信息。

1.2 詳細流程

① 獲取code

說明:網頁經過OAuth2.0驗證后,重定向到原來網頁并在url后面添加code信息。

如:http://akmsg.com/a.html => OAhth2.0 =>?http://akmsg.com/a.html?code=CODE&state=STATE

② 根據code獲取userId

說明:調用此接口后將會獲得 userId;注:userId為加密后的微信賬號。

③ 根據userId獲取微信信息

說明:調用此接口后將會獲得此訪問者在企業號登記的具體信息;如:姓名、微信號、手機號、郵箱、職位等等。

④ 根據微信信息獲取邏輯用戶信息

說明:從上一步驟獲取的微信信息,可以用來跟業務邏輯進行匹配獲取此用戶在業務層中的用戶信息。

1.3 流程圖

2. 代碼示例

2.1 代碼(C#)

邏輯:Asp.net對客戶端發送的請求進行判斷,符合微信企業號頁面規則的將進行微信企業號用戶身份認證操作。

此功能對訪問請求的三種情況進行分別判斷:

1.第一次訪問,沒code :進行OAuth驗證

2.有code,沒cookie :獲取code對應的信息

3.有code,有cookie :驗證cookie

///

/// 驗證微信訪問

///

public static void Auth(HttpContext webContext)

{

string requestURL = webContext.Request.Url.AbsoluteUri;

try

{

// 用戶訪問微信頁面有3種情況:

// 1.第一次訪問,沒code

// 2.有code,沒cookie;

// 3.有code,有cookie

// 1.第一次訪問,沒code,沒cookie:跳轉到Oauth2.0認證

if (string.IsNullOrEmpty(webContext.Request["code"]))

{

string url = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect", CORPID, webContext.Server.UrlEncode(requestURL));

webContext.Response.Redirect(url, false);

}

else if (!string.IsNullOrEmpty(webContext.Request["code"]) && string.IsNullOrEmpty(CookieHelper.GetCookie("WXToken")))

{

// 2.有code,沒cookie:根據code獲取userID

string code = webContext.Request["code"];

string userId = "";

string userInfo = "";

#region 1)根據code獲取userId

string url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token={0}&code={1}", GetAccessToken(), code);

string responseText = HttpHelper.Instance.get(url);

/*

API:http://qydev.weixin.qq.com/wiki/index.php?title=OAuth%E9%AA%8C%E8%AF%81%E6%8E%A5%E5%8F%A3#.E6.A0.B9.E6.8D.AEcode.E8.8E.B7.E5.8F.96.E6.88.90.E5.91.98.E4.BF.A1.E6.81.AF

正確的Json返回示例:

{

"UserId":"USERID",

"DeviceId":"DEVICEID"

}

未關注企業號時返回:

{

"OpenId":"OPENID",

"DeviceId":"DEVICEID"

}

錯誤的Json返回示例:

{

"errcode": "40029",

"errmsg": "invalid code"

}

*/

WeChatUserCodeEntity codeEn = JsonHelper.GetEntity(responseText);

if (codeEn.errcode > 0)

{

throw new Exception(codeEn.errmsg);

}

else if (string.IsNullOrEmpty(codeEn.UserId))

{

throw new Exception("請先關注企業號!");

}

userId = codeEn.UserId;

#endregion

#region 2)根據userId獲取用戶信息

url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token={0}&userid={1}", GetAccessToken(), userId);

responseText = HttpHelper.Instance.get(url);

/*

API:http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E8.8E.B7.E5.8F.96.E6.88.90.E5.91.98

正確的Json返回示例:

{

"errcode": 0,

"errmsg": "ok",

"userid": "zhangsan",

"name": "李四",

"department": [1, 2],

"position": "后臺工程師",

"mobile": "15913215421",

"gender": "1",

"email": "[email?protected]",

"weixinid": "lisifordev",

"avatar": "http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0",

"status": 1,

"extattr": {"attrs":[{"name":"愛好","value":"旅游"},{"name":"卡號","value":"1234567234"}]}

}

錯誤的Json返回示例:

{

"errcode": "40029",

"errmsg": "invalid code"

}

*/

WeChatUserInfoEntity userInfoEn = JsonHelper.GetEntity(responseText);

if (userInfoEn.errcode > 0)

{

throw new Exception(userInfoEn.errmsg);

}

userInfo = responseText;

#endregion

// 3.把userInfo傳入到cookie里

CookieHelper.SetCookie("WXToken", userInfo, -1);

}

else if (!string.IsNullOrEmpty(webContext.Request["code"]) && !string.IsNullOrEmpty(CookieHelper.GetCookie("WXToken")))

{

#region 3.有code,有cookie:校驗cookie

// TODO:在上面進行存入cookie時可采用AES加密,在這部進行解密校驗

// CookieHelper.SetCookie("WXToken", "", -1);

#endregion

}

else

{

throw new Exception("非授權訪問!");

}

}

catch (Exception ex)

{

throw ex;

}

}

2.2 運行圖

1) 用戶已關注訪問時

2) 用戶不屬于企業通訊錄訪問時

2.3 Dmeo下載(C#)

==================================系列文章==========================================

本篇文章:1.3?微信企業號 獲取用戶信息

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的php 获取企业号用户,微信企业号 获取用户信息(示例代码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。