Cet article décrit l'introduction du développement C# de portails et d'applications WeChat utilisant WeChat JSSDK pour implémenter la fonction d'enregistrement
À mesure que WeChat ouvre progressivement davantage d'interfaces JSSDK, nous pouvons utiliser des Les pages Web permettent d'appeler davantage d'interfaces WeChat pour obtenir des fonctions et des effets d'interface plus riches. Par exemple, nous pouvons appeler divers matériels de téléphonie mobile sur la page pour obtenir des informations, telles que la photographie par appareil photo, les informations GPS, la numérisation des codes QR, etc. Cet article explique comment utiliser ces interfaces JSSDK pour implémenter la fonction d'enregistrement, où l'enregistrement nécessite de signaler les coordonnées géographiques et les adresses, d'appeler la caméra pour prendre des photos en temps réel et d'obtenir des informations pertinentes sur l'utilisateur actuel, etc.
1. Description de JSSDK
WeChat JS-SDK est une boîte à outils de développement Web basée sur WeChat fournie par la plateforme publique WeChat pour les développeurs Web. En utilisant WeChat JS-SDK, les développeurs Web peuvent utiliser WeChat pour utiliser efficacement les capacités des systèmes de téléphonie mobile telles que la prise de photos, la sélection d'images, la voix et la localisation. En même temps, ils peuvent utiliser directement les capacités uniques de WeChat telles que le partage, numérisation, coupons et paiement, offrant aux utilisateurs de WeChat une meilleure expérience Web.
Les catégories d'interface actuellement prises en charge par JSSDK incluent les catégories suivantes : interface de base, interface de partage, interface d'image, interface audio, interface intelligente, informations sur l'appareil, emplacement géographique, secouer les périphériques, fonctionnement de l'interface, analyse WeChat, magasin WeChat. , coupons WeChat, paiement WeChat, avec l'intégration de toutes les fonctions WeChat, on estime que davantage d'interfaces seront ouvertes les unes après les autres.
Entrez dans le module [Documentation du développeur] dans le backend WeChat, et nous pouvons voir la classification fonctionnelle et l'introduction du JSSDK correspondant, comme indiqué ci-dessous.
Sur le côté droit, nous pouvons voir les instructions d'utilisation de chaque interface en détail. Fondamentalement, les méthodes d'utilisation de JSSDK sont similaires, vous pouvez donc passer le débogage et en maîtriser une. ou deux d'entre eux, et les autres Suivez simplement les instructions et suivez-les.
1) Étapes d'utilisation de JSSDK
Étape 1 : lier le nom de domaine
Connectez-vous d'abord à la plateforme publique WeChat et entrez les « Paramètres de fonction » des « Paramètres du compte officiel " pour remplir l'"Interface JS" "Nom de domaine sécurisé". Comme indiqué ci-dessous, configurez-le sur la plateforme publique.
Remarque : Après vous être connecté, vous pouvez afficher les autorisations d'interface correspondantes dans le "Centre des développeurs".
Étape 2 : Introduire les fichiers JS
Introduire les fichiers JS suivants sur la page qui doit appeler l'interface JS, (prend en charge https) : http://res .wx.qq .com/open/js/jweixin-1.0.0.js
Si vous devez utiliser la fonction périphérique shake, veuillez importer http://res.wx.qq.com/open/ js/jweixin-1.1 .0.js
Remarque : prend en charge le chargement à l'aide de la méthode de chargement de module standard AMD/CMD
Bien sûr, nous modifions généralement la page afin de faciliter plus d'effets, nous. peut également introduire d'autres JS tels que la bibliothèque de classes JQuery, etc. De plus, nous pouvons également implémenter des fonctions plus riches basées sur la bibliothèque de classes jquery-weui de WeUI. Voici la référence JS dans notre code de cas.
1 2 3 |
|
Étape 3 : Injecter la configuration de vérification des autorisations via l'interface de configuration
Toutes les pages qui doivent utiliser JS-SDK doivent d'abord injecter des informations de configuration, sinon elles ne seront pas appelées (le même L'URL ne doit être appelée qu'une seule fois, l'application Web du SPA qui modifie l'URL peut être appelée à chaque fois que l'URL change. Actuellement, le client Android WeChat ne prend pas en charge la nouvelle fonctionnalité H5 de pushState, utilisant donc pushState pour implémenter le Web. la page de l'application entraînera l'échec de la signature. Ce problème sera résolu dans Android 6.2).
1 2 3 4 5 6 7 8 9 |
|
La configuration ci-dessus est le cœur du JSSDK. Elle doit configurer l'appid, l'horodatage et le nonceStr correspondants. La chose la plus remarquable est le mécanisme d'implémentation de la signature. de cette façon, nous générons simplement la valeur correspondante en arrière-plan et l'attribuons à la page JS. C'est également l'approche la plus sûre.
Le code suivant est le code HTML de la page d'affichage Asp.net de notre projet actuel, comme indiqué ci-dessous.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
|
Étape 4 : Traiter la vérification réussie via l'interface prête
1 2 3 4 |
|
Cette interface prête est le traitement du contenu une fois la page chargée avec succès. Généralement, nous devons faire beaucoup de choses. Les opérations nécessitent que les objets pertinents puissent être appelés pour l'affectation, le traitement et d'autres opérations uniquement après le chargement de la page.
Par exemple, une fois la page prête, nous pouvons obtenir les coordonnées GPS correspondantes et d'autres opérations, qui peuvent être implémentées avec le code JS suivant.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Étape 5 : Gérer l'échec de la vérification via l'interface d'erreur
1 2 3 4 |
|
Cette interface d'erreur est également utilisée pour gérer les informations d'exception. Dans des circonstances normales, les utilisateurs peuvent être invités ici à signaler des erreurs. .
2), algorithme de signature
签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。
即signature=sha1(string1)。 示例:
1 2 3 4 5 6 7 |
|
步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1:
1 |
|
步骤2. 对string1进行sha1签名,得到signature:
1 |
|
注意事项
1.签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。
2.签名用的url必须是调用JS接口页面的完整URL。
3.出于安全考虑,开发者必须在服务器端实现签名的逻辑。
如出现invalid signature 等错误详见附录5常见错误及解决办法。
以上就是JSSDK总体的使用流程,虽然看起来比较抽象,但是基本上也就是这些步骤了。
上面的过程是具体的参数处理逻辑,我们要对应到C#代码的签名实现,需要对几个变量进行处理,下面是对应的生成noncestr、timestamp、以及签名等操作的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
还有我们要实现JSSDK签名的处理,必须先根据几个变量,构建好URL字符串,具体的处理过程,我们可以把它们逐一放在一个Hashtable里面,如下代码所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
我们注意到URL参数的字符串组合:
1 |
|
这里我们拼接好URL参数后,就需要使用签名的规则来实现签名的处理了,签名的代码如下所示,注释代码和上面代码等同。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
这样我们有了对应的值后,我们就可以把它们的参数全部放在集合里面了供使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
下面我们通过具体的代码案例来介绍使用的过程。
2、签到功能的实现处理
其实签到,都可以在微信公众号和企业号实现,微信的企业号可能实现更佳一些,不过他们使用JSSDK的接口操作是一样的,我们可以拓展过去就可以了。这里介绍微信公众号JSSDK实现签到的功能处理。
签到的功能,我们希望记录用户的GPS位置信息,还有就是利用拍照功能,拍一个照片同时上传到服务器,这样我们就可以实现整个业务效果了。
首先我们来设计签到的界面,代码及效果如下所示。
界面预览效果如下所示:
我们来看看微信JSSDK里面对于【获取地理位置接口】的说明:
1 2 3 4 5 6 7 8 9 |
|
以及图形接口里面【拍照或从手机相册中选图接口】的说明:
1 2 3 4 5 6 7 8 |
|
上传图片到微信服务器接口如下所示。
1 2 3 4 5 6 7 |
|
备注:上传图片有效期3天,可用微信多媒体接口下载图片到自己的服务器,此处获得的 serverId 即 media_id。
根据这几个接口,我们来对它们进行包装,以实现我们的业务需求。根据我们的需要,我们对JSSDK接口进行了调用,如下所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
|
其中的chooseImage()是我们在页面开始的时候,让用户拍照的操作,具体JS代码如下所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
但用户使用摄像头拍照后,就会返回一个res.localIds集合,因为我们拍照一个,那么可以把它直接赋值给图片对象,让它显示当前拍照的图片。
拍照完成,我们单击【签到】应该把图片和相关的坐标等信息上传到服务器的,图片首先是保存在微信服务器的,上传图片有效期3天,可用微信多媒体接口下载图片到自己的服务器,此处获得的 serverId 即 media_id。
为了实现我们自己的业务数据,我们需要把图片集相关信息存储在自己的服务器,这样才可以实现信息的保存,最后提示【签到操作成功】,具体过程如下所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
另外,我们为了实现单击图片控件,实现重新拍照的操作,以及签到的事件处理,我们对控件的单击处理进行了绑定,如下代码所示。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
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!