Heim  >  Artikel  >  WeChat-Applet  >  Entwicklung eines öffentlichen C#-WeChat-Kontos – Webseitenautorisierung (oauth2.0) zum Abrufen grundlegender Benutzerinformationen 1

Entwicklung eines öffentlichen C#-WeChat-Kontos – Webseitenautorisierung (oauth2.0) zum Abrufen grundlegender Benutzerinformationen 1

黄舟
黄舟Original
2017-01-16 11:02:432441Durchsuche

Vorwort

Die Autorisierung von WeChat-Webseiten ist in zwei Methoden unterteilt: snsapi_base und snsapi_userinfo. snsapi_base muss dem öffentlichen Konto folgen und die Benutzerautorisierungsschnittstelle wird beim Abrufen von Benutzerinformationen nicht angezeigt. snsapi_userinfo wird verwendet, wenn der Benutzer die Seite durchsucht, ohne dem offiziellen Konto zu folgen. Zuerst wird eine Benutzerautorisierungsschnittstelle angezeigt, und die Benutzerinformationen können erst abgerufen werden, nachdem der Benutzer sie autorisiert hat. In diesem Artikel werfen wir zunächst einen Blick auf die Implementierung von snsapi_base.

Achtung, wenn Sie in die Falle tappen

  • Als ich zum ersten Mal mit dem Debuggen im snsapi_base-Modus begann und auf die Seitenadresse klickte, wurde eine Aufforderung angezeigt dass der Adresslink nicht verfügbar war, müssen zunächst die grundlegenden Informationen für die Webseitenautorisierung im offiziellen Konto festgelegt werden.

  • Klare Unterscheidung zwischen globalem Zugriffstoken und Webseitenautorisierungs-Zugriffstoken

Entwicklung eines öffentlichen C#-WeChat-Kontos – Webseitenautorisierung (oauth2.0) zum Abrufen grundlegender Benutzerinformationen 1

Entwicklung eines öffentlichen C#-WeChat-Kontos – Webseitenautorisierung (oauth2.0) zum Abrufen grundlegender Benutzerinformationen 1

Beachten Sie hier, dass Sie nur den Domainnamen eingeben

, um den Effekt zu sehen

Hier sehen wir, dass wir die grundlegenden Informationen des Benutzers über oauth snsapi_base erhalten haben reicht für die allgemeine Beratungsentwicklung aus.

Entwicklung eines öffentlichen C#-WeChat-Kontos – Webseitenautorisierung (oauth2.0) zum Abrufen grundlegender Benutzerinformationen 1

Siehe die Idee

1 Holen Sie sich zuerst den Code, indem Sie die Adresse zurücksenden.

2. OpenID über Code abrufen.

3. Holen Sie sich das globale access_token über appid und appsecret (dies unterscheidet sich von snsapi_userinfo).

4. Erhalten Sie Benutzerinformationen über globales access_token und openid.

Sehen Sie sich den Code an

Hier geht es ganz einfach. Die Hauptsache ist, die WeChat-Schnittstelle mithilfe der Get-Methode anzupassen. Bereiten Sie gleichzeitig Ihren Get- und Post-Vorgang vor Anforderungsmethoden und Verwendung von JSON für die Rückgabeparameter. In Entitätsklasse konvertieren.

public ActionResult OAuthSnsApiBase() {      
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));
                    
string accesstoken = string.Empty;                    
AccessToken token = HttpUtility.Get<AccessToken>(string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}",
appID,appsecret));                    
if (token != null && !string.IsNullOrEmpty(token.access_token))                    
{                        
accesstoken = token.access_token;                    
}                                        
if (oauthToken != null && !string.IsNullOrEmpty(oauthToken.openid))                    
{                                                
OAuthUserInfo userInfo = HttpUtility.Get<OAuthUserInfo>(string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN", 
accesstoken, 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_base&state=123456
#wechat_redirect", appID,"http://"+Request.Url.Host + Url.Action("OAuthSnsApiBase")));                
}            
}            
catch (Exception ex)            
{                         
ViewData["errmsg"] = ex.Message;            
}                        
return View();        
}
 public class OAuthToken    
 {        
 public string access_token { get; set; }        
 public int expires_in { get; set; }        
 public string refresh_token { get; set; }        
 public string openid { get; set; }        
 public string scope { get; set; }    
 } 
 public class AccessToken    
 {        
 public string access_token { get; set; }        
 public int expires_in { get; set; }    
 }public class OAuthUserInfo    
 {        
 public string openid { get; set; }        
 public string nickname { get; set; }        
 public int sex { get; set; }       
  public string province { get; set; }        
  public string city { get; set; }        
  public string country { get; set; }        
  public string headimgurl { get; set; }        
  public string privilege { get; set; }        
  public string unionid { get; set; }            
  }

Zusammenfassung

Die Schnittstelle zum Abrufen von Benutzerinformationen ist hier https://api.weixin.qq.com/cgi-bin/user/info? access_token =ACCESS_TOKEN&openid=OPENID&lang=zh_CN. Es unterscheidet sich von der Webseitenautorisierung 2 zum Abrufen der Benutzeroberfläche.

Entwicklung eines öffentlichen C#-WeChat-Kontos – Webseitenautorisierung (oauth2.0) zum Abrufen grundlegender Benutzerinformationen 1

Entwicklung eines öffentlichen C#-WeChat-Kontos – Webseitenautorisierung (oauth2.0) zum Abrufen grundlegender Benutzerinformationen 1


Alle Codes werden auf Github hochgeladen: https://github.com /garfieldzf8/WeChat

Referenz

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

Das Obige ist der Inhalt der Entwicklung öffentlicher C#-WeChat-Webseiten (oauth2.0), um grundlegende Benutzerinformationen zu erhalten. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn