网页授权

网页授权登录

  1. callbackUrl := "https://powerwechat.artisan-cloud.com/callback/authorized/user"
  2. WeComApp.OAuth.Provider.WithRedirectURL(callbackUrl)
  3. redirectURL, _ := WeComApp.OAuth.Provider.GetAuthURL()

扫码授权登录

  1. callbackUrl := "https://powerwechat.artisan-cloud.com/callback/authorized/user"
  2. WeComApp.OAuth.Provider.WithRedirectURL(callbackUrl)
  3. redirectURL, _ := WeComApp.OAuth.Provider.GetQrConnectURL()

获取访问用户敏感信息

自建应用与代开发应用可通过该接口获取成员授权的敏感字段

  1. user, err := WeComApp.OAuth.Provider.GetUserInfo(code)
  2. if err != nil {
  3. panic(err)
  4. }
  5. userDetail, err := WeComApp.OAuth.Provider.GetUserDetail(user.UserTicket)
  6. if err != nil {
  7. panic(err)
  8. }
  9. // userDetail output:
  10. // {
  11. // "errcode": 0,
  12. // "errmsg": "ok",
  13. // "userid": "Walle",
  14. // "gender": "0",
  15. // "avatar": "http://wework.qpic.cn/wwhead/duc2TvpEgST9hicuyypLEKNreicYWfEwYNtUGkXicyzeH7dTLVyLBM52ULDFaic3nj5D8Ox597meRmA/0",
  16. // "qr_code": "https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=vc506f7b53734f5d32",
  17. // "mobile": "18611111111",
  18. // "email": "xxx@artisan-cloud.com",
  19. // "biz_mail": "",
  20. // "address": ""
  21. // }

微信官方文档

获取访问用户身份

如果你只需要把OAuth2的code换取userId,那么按照下面方法就可以:

  1. code := "imGdHB0X2DEW_U17Hcy_o5tbhN7ekJts8K9WWPhuFyE"
  2. user, err := WeComApp.OAuth.Provider.ContactFromCode(code)
  3. if err != nil {
  4. panic(err)
  5. }
  6. log.Println("userID", user.GetID())

但如果你需要把OAuth2的code换取到详尽的用户信息,比如用户的头像、邮箱、真实姓名之类的,那么请使用详细版本:

  1. code := "imGdHB0X2DEW_U17Hcy_o5tbhN7ekJts8K9WWPhuFyE"
  2. user, err := WeComApp.OAuth.Provider.Detailed().ContactFromCode(code)
  3. if err != nil {
  4. panic(err)
  5. }
  6. log.Println("openID", user.GetOpenID())
  7. log.Println("userID", user.GetID())
  8. log.Println("name", user.GetName()())
  9. log.Println("avatar", user.GetAvatar())
  10. // 由于我们的user接口可能遗漏某些字段的获取方法,所以你可以通过 user.GetRaw() 获取一个HashMap,
  11. // 这个和之前的user.GetID()效果是一样的
  12. rawData, err := user.GetRaw()
  13. log.Println("position", (*rawData))["position"])
  14. // 也可以使用collection的属性
  15. log.Println("position", user.Attributes["position"]))

TIP

来自企业微信官方的公告: 从2022年6月20号20点开始,除通讯录同步以外的基础应用(如客户联系、微信客服、会话存档、日程等),以及新创建的自建应用与代开发应用,调用该接口时,不再返回以下字段:头像、性别、手机、邮箱、企业邮箱、员工个人二维码、地址,应用需要通过oauth2手工授权的方式获取管理员与员工本人授权的字段。

如果需要获取头像、邮箱、真实姓名需要使用“获取访问用户敏感信息”接口

微信官方文档

使用示例

参考:PowerWechatTutorial