程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> C#微信公眾號開發--網頁授權(oauth2.0)獲取用戶基本信息二,

C#微信公眾號開發--網頁授權(oauth2.0)獲取用戶基本信息二,

編輯:關於.NET

C#微信公眾號開發--網頁授權(oauth2.0)獲取用戶基本信息二,


前言

       這一篇實現snsapi_userinfo,寫這篇時其實我是有疑惑的,因為我並沒有調試成功,但是我反復檢查程序和思路是沒有問題的,因為我使用的測試公眾號,群裡一個伙計說他之前調試時用的也是測試公眾號也遇到了和我一樣的問題,然後換上正式公眾號就好了。而且我再三檢查了微信開發文檔裡,snsapi_userinfo的方式是要比snsapi_base簡單的,也很好理解。

      我先描述下問題吧,snsapi_userinfo的方式是不需要我們關注公眾號的,所以我就在未關注的情下點擊頁面地址跳轉後提示我未關注測試公眾號。 

 

實現思路

     有了上一篇網頁授權獲取用戶基本信息一的基礎,再實現snsapi_userinfo就更快了,一路調接口。 

     1、先獲取code

     2、根據code獲取網頁授權access_token和openid。看了其他人寫的博客有的提到了網頁授權access_token每天的上限是12次,也就是每兩個小時調用一次要自己緩存起來(大多數demo裡用Session)。我查了下微信開發文檔接口頻率限制,正式公眾號和測試公眾號網頁授權access_token和refresh_token調用都是沒有上限的。附微信接口限制說明

     3、根據access_token和openid獲取用戶信息。

     

看代碼

 public ActionResult OAuthSnsApiUserInfo()
  {
        string code = Request.QueryString["code"];
        try
        {
             if (!string.IsNullOrEmpty(code))
             {
                 OAuthToken oauthToken = HttpUtility.Get<OAuthToken>(string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", appID, appsecret, code));

                 if (oauthToken != null && !string.IsNullOrEmpty(oauthToken.openid) && !string.IsNullOrEmpty(oauthToken.access_token))
                    {

                        OAuthUserInfo userInfo = Get<OAuthUserInfo>(string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN", oauthToken.access_token, oauthToken.openid));
                        if (userInfo != null)
                        {

                            ViewData["headImage"] = userInfo.headimgurl;
                            ViewData["openid"] = userInfo.openid;
                            ViewData["nickName"] = userInfo.nickname;
                            if (userInfo.sex == 0)
                            {
                                ViewData["sex"] = "未知";
                            }
                            else if (userInfo.sex == 1)
                            {
                                ViewData["sex"] = "男";
                            }
                            else
                            {
                                ViewData["sex"] = "女";
                            }
                            ViewData["province"] = userInfo.province;
                            ViewData["city"] = userInfo.city;
                        }
                        else
                        {
                        }
                    }
                    else
                    {       
                    }
                }
                else
                {
                    return Redirect(string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_userinfo&state=123456#wechat_redirect", appID,Server.UrlEncode("http://" + Request.Url.Host + Url.Action("OAuthSnsApiUserInfo"))));
             }
        }
       catch (Exception ex)
      {
            ViewData["errmsg"] = ex.Message;
      }
            
      return View();
 }

  

總結

    網頁授權二裡獲取用戶信息的接口是:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN。

 

參考

    http://www.cnblogs.com/net-xiejun/p/4632711.html

    http://www.cnblogs.com/txw1958/p/weixin76-user-info.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved