


Autorisation Web OAuth2.0 de la série de développement Force.com WeChat
Feb 25, 2017 pm 05:18 PMOAuth est un protocole ouvert qui permet aux utilisateurs de permettre à des applications tierces d'obtenir les ressources privées de l'utilisateur (telles que les informations personnelles de l'utilisateur, les photos, les vidéos, les listes de contacts) stockées sur un site Web de manière sécurisée et standard sans avoir besoin de fournir un nom d'utilisateur. et mot de passe pour les applications tierces. Cet article présentera en détail le protocole OAuth et son implémentation spécifique dans WeChat.
Introduction au protocole OAuth2.0
OAuth2.0 est la prochaine version du protocole OAuth, mais n'est pas rétrocompatible avec OAuth 1.0. OAuth 2.0 se concentre sur la simplicité pour les développeurs clients, tout en fournissant des flux d'authentification spécialisés pour les applications Web, les applications de bureau et les appareils mobiles et de salon. OAuth 2.0 permet aux utilisateurs de fournir un jeton au lieu d'un nom d'utilisateur et d'un mot de passe pour accéder à leurs données stockées auprès d'un fournisseur de services spécifique. Chaque jeton autorise un site Web spécifique (par exemple, un site Web de montage vidéo) à accéder à une ressource spécifique (par exemple, uniquement les vidéos d'un certain album) pendant une période de temps spécifique (par exemple, dans les 2 heures suivantes). De cette manière, OAuth permet aux utilisateurs d'autoriser des sites Web tiers à accéder à leurs informations stockées chez un autre fournisseur de services sans partager leurs autorisations d'accès ni l'intégralité du contenu de leurs données.
Le processus spécifique d'authentification et d'autorisation OAuth2.0?:
Les trois parties impliquées dans le processus d'authentification et d'autorisation Oauth2.0 comprennent?:
1 . Fournisseur de services, que les utilisateurs utilisent pour stocker des ressources protégées telles que des photos, des vidéos et des listes de contacts.
2. Utilisateur, propriétaire des ressources protégées stockées chez le fournisseur de services.
3. Client, une application tierce qui souhaite accéder aux ressources du fournisseur de services, généralement un site Web, tel qu'un site Web fournissant des services d'impression de photos. Avant le processus d'authentification, le client doit demander une identité client auprès du fournisseur de services.
Le processus d'utilisation d'OAuth pour l'authentification et l'autorisation est le suivant?:
1 L'utilisateur accède au site Web du client et souhaite exploiter les ressources de l'utilisateur stockées sur le service. fournisseur;
2. Le client demande un jeton temporaire au fournisseur de services;
3. Une fois que le fournisseur de services a vérifié l'identité du client, il accorde un jeton temporaire;
4. Une fois que le client a obtenu le jeton temporaire, il dirige l'utilisateur vers la page d'autorisation du fournisseur de services pour demander l'autorisation de l'utilisateur. Dans ce processus, le jeton temporaire et la connexion de rappel du client sont envoyés au fournisseur de services
5. L'utilisateur saisit le nom d'utilisateur et le mot de passe sur la page Web du fournisseur de services, puis autorise le client à accéder à la demande. ressource. ;
6. Une fois l'autorisation réussie, le fournisseur de services guide l'utilisateur pour revenir à la page Web du client?;
7. sur le jeton temporaire?;
8. Le fournisseur de services accorde au client un jeton d'accès basé sur le jeton temporaire et l'autorisation de l'utilisateur
9. Le client utilise le jeton d'accès obtenu pour accéder protégé?; fichiers stockés sur les ressources du fournisseur de services.
Autorisation OAuth2.0 de la page Web WeChat?:
Si l'utilisateur accède à la page Web tierce du compte officiel dans WeChat (sauf Web WeChat), le développeur du compte officiel peut obtenir le Informations utilisateur de base actuelles (y compris le surnom, le sexe, la ville, le pays). à l'aide des informations utilisateur, vous pouvez réaliser des fonctions telles que l'optimisation de l'expérience, les statistiques de source d'utilisateurs, la liaison de compte et l'authentification de l'identité de l'utilisateur.
Il convient de noter que l'interface d'obtention des informations utilisateur de base (qui sera présentée dans un article de blog ultérieur) ne peut obtenir les informations de base de l'utilisateur basées sur l'OpenID de l'utilisateur que lorsque l'utilisateur interagit avec le compte public, et elle peut être obtenue via l'autorisation de la page Web. Si les informations de base de l'utilisateur ne nécessitent pas d'interaction de message, juste au moment où l'utilisateur accède à la page Web du compte officiel, une interface demandant l'autorisation de l'utilisateur appara?tra une fois que l'utilisateur l'aura autorisée, sa base. des informations peuvent être obtenues (ce processus ne nécessite même pas que l'utilisateur ait suivi le compte officiel.)
Ci-dessous, nous utiliserons un exemple spécifique pour montrer le processus de développement détaillé.
Configurez le nom de domaine de rappel d'autorisation?:
Avant que le compte public WeChat ne demande l'autorisation de la page Web de l'utilisateur, les développeurs doivent Configurez d'abord le nom de rappel d'autorisation sur la page Mon service du site Web de la plateforme publique. Il convient de noter que le nom de domaine ici n'inclut pas http:// ou https://. De plus, la spécification de configuration du nom de domaine de rappel d'autorisation est le nom de domaine complet. Par exemple, le nom de domaine qui nécessite une autorisation de page Web est?: www.qq.com Après la configuration, toutes les pages sous ce nom de domaine, telles que http:/. /www.qq.com/music.html, http://www.qq.com/login.html peut effectuer l'authentification OAuth2.0. Cependant, http://pay.qq.com et http://music.qq.com ne peuvent pas effectuer l'authentification OAuth2.0.
Pour cela, entrez dans la page du service (utilisez le compte de service officiel ou le compte d'abonnement certifié et retrouvez-le via mon service. S'il s'agit d'un compte test, vous pouvez le trouver directement sur la page d'accueil) et trouvez le Autorisation de la page Web OAuth2.0. Cliquez sur le lien de modification à droite?:
Entrez le nom de domaine dans la fenêtre contextuelle et cliquez sur le bouton OK pour enregistrer?:
L'utilisateur accepte d'autoriser et d'obtenir le code?:
Cette étape est équivalente à la deuxième étape du processus d'authentification OAuth2.0 introduite précédemment "Le client demande un jeton temporaire au fournisseur de services". Le code ici est le jeton temporaire. à cet effet, vous pouvez demander l'OAuth2 de WeChat. .0 pour obtenir le code. Une URL de page de rappel doit être spécifiée dans les paramètres de cette interface. Pour cela, nous devons créer une page Apex. Pour ce faire, connectez-vous à Force.com et recherchez le nom de domaine. Le nom de domaine généralement accessible depuis la Chine est https://ap1.salesforce.com, saisissez https://ap1.salesforce.com/apex/oauth2test dans la barre d'adresse du navigateur, Force.com vous demandera que la page n'existe pas, cliquez sur le lien "Créer une page oauth2test" pour créer la page :
La page créée est la suivante Si le mode développeur est activé, la page est divisée en parties supérieure et inférieure. . La partie supérieure est l'effet d'affichage et la partie inférieure est la fenêtre d'édition du code source. Par défaut, Force.com appliquera ses propres styles de navigation supérieure, de navigation gauche et CSS à la page nouvellement créée?:
<.>
public class oauth2testcontroller { public String code {get; set;} public oauth2testcontroller(){ code = ApexPages.currentPage().getParameters().get('code'); if(String.isBlank(code)){ code = 'No Code'; } } }
<apex:page standardstylesheets="false" showHeader="false" sidebar="false" controller="oauth2testcontroller"> {!code} </apex:page>{!Object name} est la syntaxe utilisée pour afficher les valeurs des objets dans la Force .com Visualforce, nous devons ensuite configurer la page pour qu'elle soit accessible via le réseau public. Pour ce faire, connectez-vous à Force.com, entrez Configuration –> Développer des sites –> le site comme indiqué ci-dessous?:
若提示“該鏈接無法訪問”,請檢查參數是否填寫錯誤,是否擁有scope參數對應的授權作用域權限,其中每個參數的詳細說明如下:
在我們的例子里URL如下,其中scope我們指定為snsapi_userinfo,彈出授權頁面:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3b3aef2c09447269&redirect_uri=http://johnson0001-developer-edition.ap1.force.com/oauth2test&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
興許是測試賬號的關系,雖然微信接口文檔里提到在制定scope為snsapi_userinfo的情況下會彈出如下圖左所示的授權頁面,但反復嘗試(乃至刪除并重新關注賬號)中也沒有看到該頁面,不過重點是我們得到了臨時令牌,如下圖右所示。右圖實際是http://johnson0001-developer-edition.ap1.force.com/oauth2test頁面,用戶同意授權后跳轉到(或者我遇到的實際情況是直接跳轉)到redirect_uri/?CODE&state=STATE。若用戶禁止授權,則重定向后不會帶上code參數,僅會帶上state參數redirect_uri?state=STATE。
另外特別需要說明的是,code作為換取access_token的臨時票據,每次用戶授權帶上的code都不一樣,code只能使用一次,5分鐘未被使用自動過期。
通過Code換取網頁授權access_token:
首先請注意,這里通過code換取的網頁授權access_token,與基礎支持中的access_token不同。公眾號可通過下述接口來獲取網頁授權access_token。如果網頁授權的作用域為snsapi_base,則本步驟中獲取到網頁授權access_token的同時,也獲取到了 openid,snsapi_base式的網頁授權流程即到此為止。 獲取code后,可以通過以下接口獲取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
這里的CODE即為通過前面方式獲得的臨時令牌(票據),參數的具體說明如下:
將URL直接輸入到瀏覽器地址欄即可得到返回數據,當然真實場景里更多通過后臺代碼來請求,正確返回時的JSON數據包如下:
{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }
參數的具體說明如下:
錯誤時微信會返回JSON數據包如下(示例為Code無效錯誤):
{"errcode":40029,"errmsg":"invalid code"}
在本例中獲得的access_token實例如下:
{"access_token":"OezXcEiiBSKSxW0eoylIeMEUA_AZuBDY8AO0IIw270MMsvemqLvgx1HqemeXIZfzXW2d6yHCPy9cA1yHZ1jHCkwlH5Ct5Jfa1jOQm88M9LzU_O8BCKMNhN7yLlHJfOFLuf4lLTNGOOsoWYxQzYVNGw","expires_in":7200,"refresh_token":"OezXcEiiBSKSxW0eoylIeMEUA_AZuBDY8AO0IIw270MMsvemqLvgx1HqemeXIZfz_Vj5pJZlv2V5wK9EzWmxQmM07cqIAwMXOdqzlQs-NY4hiyENP4WhO4Twpko-3iY_pAPZRnGGmAVt3DirZaWIyg","openid":"ou-37t936RNZEcW0mI75RN2pdxkc","scope":"snsapi_userinfo"}
可以看到上面access_token的默認失效時間是7200秒,也就是2小時,當access_token超時后,可以通過refresh_token進行刷新,refresh_token擁有較長的有效期(7天、30天、60天、90天),當refresh_token失效后,需要用戶重新授權,簡化理解起見,我們在本文的最后再介紹相關技術。
拉取用戶信息(需Scope為snasapi_userinfo):
通過access_token獲取用戶信息的接口如下,使用GET方法:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
參數具體說明如下:
本例的URL如下:
https://api.weixin.qq.com/sns/userinfo?access_token=OezXcEiiBSKSxW0eoylIeMEUA_AZuBDY8AO0IIw270MMsvemqLvgx1HqemeXIZfzXW2d6yHCPy9cA1yHZ1jHCkwlH5Ct5Jfa1jOQm88M9LzU_O8BCKMNhN7yLlHJfOFLuf4lLTNGOOsoWYxQzYVNGw&openid=ou-37t936RNZEcW0mI75RN2pdxkc&lang=zh_CN
輸入瀏覽器訪問即可得到相應的用戶信息:
{"openid":"ou-37t936RNZEcW0mI75RN2pdxkc","nickname":"王浩","sex":1,"language":"zh_CN","city":"松江","province":"上海","country":"中國","headimgurl":"http:\/\/wx.qlogo.cn\/mmopen\/lqsZNvDqcXe8nBKHBPsp9YHuZXPtkzOD1uq3r3xxDicuDLKGlicNd1b371ODnn9xNBB9y9ChBSfL7tuX6m9FS8koY9Ex1iaJRDI\/0","privilege":[]}
刷新access_token:
可以通過前面在“通過Code換取網頁授權access_token”小節(jié)中獲得的refresh_token來調用刷新Token接口獲取更新的access_token,微信在API文檔里介紹refresh_token擁有較長的有效期(7天、30天、60天、90天),但實際微信的refresh_token的有效期是多長沒有具體說明,如果有具體經驗的朋友歡迎分享。微信刷新access_token的接口如下:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
接口的具體參數定義如下:
正確時返回的JSON數據包如下:
{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }
數據包的具體定義如下:
錯誤時微信會返回JSON數據包如下(示例為Code無效錯誤):
{"errcode":40029,"errmsg":"invalid code"}
更多Autorisation Web OAuth2.0 de la série de développement Force.com WeChat相關文章請關注PHP中文網!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)