Maison  >  Article  >  développement back-end  >  .Net implémente l'affichage du code de la fonction de partage WeChat JS-SDK

.Net implémente l'affichage du code de la fonction de partage WeChat JS-SDK

巴扎黑
巴扎黑original
2017-09-18 10:14:101819parcourir

Cet article présente principalement les informations pertinentes sur le code d'implémentation .Net de la fonction de partage WeChat JS-SDK. Les amis dans le besoin peuvent s'y référer

Qu'est-ce que l'interface JS-SDK ?

Afin de faciliter aux développeurs la mise en œuvre des fonctions de page Web dans WeChat (pages Web accessibles en fonction du navigateur WeChat), telles que la prise de photos, la sélection d'images, la voix, la localisation et d'autres fonctionnalités du système de téléphonie mobile, et pour faciliter les développeurs Pour utiliser directement WeChat pour partager et numériser. Grâce aux capacités uniques de WeChat telles que la numérisation, WeChat a lancé un package de développement global de JS-SDK que les développeurs peuvent utiliser facilement.

Fonction de partage

La documentation officielle fournit des exemples de codes pour php, java, node.js et python, mais il n'y a pas de version c# pour compenser. le grand nombre de .net Pour répondre aux besoins des utilisateurs, j'ai copié l'exemple de logique de code de la version PHP dans la version .net et j'ai ajouté une fonction de partage au front-end Web, j'espère que cela sera utile à tout le monde.

Mise en œuvre du programme

Organigramme

La classe clé du programme est JSSDK, qui contient toutes les requêtes côté serveur Processus logique d'authentification, voici l'organigramme du processus :

Analyse du code clé

Pour assurer la connexion entre le serveur tiers et serveur WeChat Pour la sécurité de la transmission des données, toutes les interfaces WeChat sont appelées en utilisant https, donc .net fait référence à un package réseau version supérieure (.Net 4.5+) pour les requêtes http.


private string httpGet(string url)
{
  if (url.StartsWith("https"))
    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

  HttpClient httpClient = new HttpClient();
  httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
  HttpResponseMessage response = httpClient.GetAsync(url).Result;

  if (response.IsSuccessStatusCode)
  {
    string result = response.Content.ReadAsStringAsync().Result;
    return result;
  }
  return null;
}

Pour obtenir le access_token, recherchez-le d'abord à partir du access_token.aspx local. S'il n'existe pas ou expire (7000 secondes), accédez au serveur WeChat. pour l'obtenir à nouveau.


private string getAccessToken()
{
  string accessToken = string.Empty;
  var data = JObject.Parse(getAspxFile("access_token.aspx", ASPX_HEAD[1]));
  if (data != null && long.Parse(data["expire_time"].ToString()) < Utils.ConvertTimeStamp(DateTime.Now))
  {
    string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
      + this.appId + "&secret=" + this.appSecret;
    var jRes = JObject.Parse(httpGet(url));
    accessToken = jRes["access_token"].ToString();
    if (!string.IsNullOrEmpty(accessToken))
    {
      data["expire_time"] = Utils.ConvertTimeStamp(new DateTime()) + 7000;
      data["access_token"] = accessToken;
      setAspxFile("access_token.aspx", data.ToString(), ASPX_HEAD[1]);
    }
  }
  else
    accessToken = data["access_token"].ToString();
  return accessToken;
}

Récupérez jsapi_ticket, le principe est le même que access_token.


private string getJsApiTicket()
{
  string ticket = string.Empty;
  var data = JObject.Parse(getAspxFile("jsapi_ticket.aspx", ASPX_HEAD[0]));
  if (data != null && long.Parse(data["expire_time"].ToString()) < Utils.ConvertTimeStamp(DateTime.Now))
  {
    string accessToken = getAccessToken();
    string url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token="
      + accessToken;
    var jRes = JObject.Parse(httpGet(url));
    ticket = jRes["ticket"].ToString();
    if (!string.IsNullOrEmpty(ticket))
    {
      data["expire_time"] = Utils.ConvertTimeStamp(new DateTime()) + 7000;
      data["jsapi_ticket"] = ticket;
      setAspxFile("jsapi_ticket.aspx", data.ToString(), ASPX_HEAD[0]);
    }
  }
  else
    ticket = data["jsapi_ticket"].ToString();
  return ticket;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn