Bien que la plate-forme Open de Sina Weibo fournit des téléchargements de SDK de développement dans diverses langues, chacun est livré avec des documents de description de démo et d'interface pour les appels d'interface de base. Cependant, après avoir essayé patiemment ces jours-ci, je pense que les conseils d'introduction sur la plate-forme ouverte de Sina Weibo sont quelque peu incompatibles avec les annotations d'utilisation de la démonstration dans le package de développement Java téléchargé Weibo4j. De plus, ma propre capacité de compréhension est limitée, ce qui conduit à de nombreux problèmes discrets. Heureusement, je n'ai pas renoncé à l'essayer de le comprendre. Moins non-sens, ce qui suit est mon processus d'apprentissage.
Si vous souhaitez développer votre propre application Weibo en appelant l'API de la plate-forme ouverte Sina Weibo, la première étape consiste à avoir un compte Sina Weibo et un compte CSDN, car nous devons utiliser ces deux comptes pour créer des applications Weibo en même temps pour obtenir la clé d'application et la clé secrète. Alors, quelles sont les utilisations de la clé d'application et de la clé secrète?
En fait, je viens de lire une série d'explications sur la plate-forme ouverte de Sina Weibo, mais je ne comprenais pas comment la clé d'application et la clé secrète sont utiles. Parce que la chose la plus importante est de comprendre l'ensemble du processus d'authentification et d'autorisation OAuth, ainsi que le rôle de plusieurs jetons et 4 URL dans l'ensemble du processus d'authentification et d'autorisation OAuth.
Quand j'ai rencontré Oauth pour la première fois, ce qui n'en avait aucune idée, je pensais que je ne pourrais pas continuer à apprendre. Heureusement, j'ai trouvé les articles suivants, qui sont très utiles pour comprendre OAuth. Le lien est le suivant:
Il y a 3 participants à OAuth, à savoir l'utilisateur, le fournisseur de services et le consommateur. Supposons que je souhaite développer une application (app) basée sur la plate-forme ouverte Sina Weibo pour les autres utilisateurs de Sina Weibo. Leur correspondance est la suivante:
En fait, notre application équivaut à une application tierce pour l'utilisateur et le fournisseur (plate-forme Sina Weibo). En tant qu'application tierce, si vous souhaitez accéder aux ressources enregistrées par l'utilisateur sur la plate-forme Sina Weibo, vous devez subir une série d'authentification et d'autorisation avant de pouvoir fonctionner.
Ce qui suit est un diagramme basé sur ma compréhension de l'ensemble du processus d'authentification et d'autorisation OAuth (vous pouvez jeter un œil et le sauter. Après avoir une certaine compréhension de certains des concepts ci-dessous, vous reviendrez sur ce graphique de flux):
En combinant l'organigramme ci-dessus, voici ma compréhension de ces termes et de la description de chaque processus:
Clé de consommation et secret de consommation: les plates-formes ouvertes de Sina Weibo sont appelées la clé de l'application et la clé secrète respectivement. Le consommateur s'applique au fournisseur pour pouvoir appeler son API ouverte. Une fois la demande approuvée, le fournisseur sera affecté au consommateur qui répond à ses exigences, qui est utilisée pour identifier de manière unique que le consommateur répond aux exigences du fournisseur.
Correspondant aux flux 1 et 2 dans la figure ci-dessus.
Le jeton de demande, demande secrète: lorsque l'utilisateur accède au consommateur et souhaite obtenir son service spécial, le service est renvoyé par le consommateur après avoir intégré les ressources stockées dans l'utilisateur lui-même. À l'heure actuelle, le consommateur demande au fournisseur d'obtenir un jeton de demande, qui est utilisé pour identifier de manière unique l'association spécifique entre le consommateur et l'utilisateur.
Correspondant aux flux 3, 4 et 5 dans la figure ci-dessus.
Pour traiter 6, le consommateur doit diriger l'utilisateur vers la page d'authentification et d'autorisation OAuth fournie par le fournisseur. En fait, le navigateur redirige vers le AuthenticationUrl avec le jeton de demande et les paramètres secrètes de la demande. Cette URL est fournie par le fournisseur.
Ensuite, dans les processus 7 et 8, l'utilisateur autorise le consommateur (généralement simplement se connecter en entrant le compte et le mot de passe), le fournisseur redirigera vers le callback_url fourni par le consommateur dans le processus 1 et joigne à OAuth Token et OAuth Verifier aux paramètres URL.
Le processus 9 est à nouveau le consommateur qui demande à nouveau pour obtenir un jeton d'accès via le jeton de demande obtenu auprès du fournisseur auparavant.
Token d'accès, accès secret: Si le fournisseur renvoie un jeton d'accès sans autorisation d'utilisateur dans le processus 10, il est utilisé pour identifier de manière unique les ressources et les informations stockées dans le fournisseur d'un certain consommateur. Ensuite, le consommateur peut commencer à utiliser le jeton d'accès obtenu et à accéder au secret pour accéder aux ressources stockées dans le fournisseur par l'utilisateur correspondant.
Après avoir intégré et exploité les informations de l'utilisateur dans le processus 11, les résultats de service spécifiques peuvent être renvoyés à l'utilisateur.
Grâce à la compréhension ci-dessus du processus OAuth, nous savons que l'utilisateur n'a pas divulgué le compte, le mot de passe, etc. requis pour se connecter au fournisseur au consommateur tiers. Dans le même temps, l'utilisateur peut utiliser les services spéciaux du consommateur. Quel processus de fonctionnement intelligent et sûr!
De plus, dans la figure ci-dessus, le consommateur a fait différentes demandes du fournisseur. En fait, le fournisseur fournit 3 URL avec différentes fonctions à l'accès aux consommateurs. Les captures d'écran de ces 3 URL sur la plate-forme ouverte de Sina Weibo sont les suivantes:
Utilisez la vérification OAuth et publiez sur la plate-forme ouverte de Sina Weibo
Pour utiliser l'API de la plate-forme ouverte Sina Weibo, vous devez d'abord obtenir la clé d'application et le secret de l'application attribué par SINA. Vous trouverez ci-dessous la clé d'application et le secret de l'application attribué par SINA après avoir créé l'application (cela doit être maintenu confidentiel).
Ensuite, téléchargez le SDK de Weibo, j'utilise Weibo4j en Java.
Modifiez la clé de l'application et le secret de l'application de la classe Weibo.java dans le package SDK sur la clé d'application et le secret de l'application que vous venez d'obtenir, comme indiqué dans les instructions suivantes pour une utilisation:
Après les terminer, vous pouvez commencer à écrire du code en fonction de la démo fournie. comme suit:
Weboauth.java est utilisé pour initialiser la clé d'application et le secret de l'application requis pour la classe Weibo.java, et fournit des méthodes pour getRequestToken () et getTaccessToken () pour obtenir un jeton de demande et d'accès. Les paramètres requis sont affichés dans le code. De plus, une méthode pour publier un texte Weibo est également fournie pour mettre à jour ().
package weibo4j.xamples; importer weibo4j.status; importer Weibo4j.weibo; Importer Weibo4j.weiboException; importation Weibo4j.http.accesstoken; Importer Weibo4j.http.RequestToken; Importer java.io.UNSUPPORTEDENCODINGException; // la classe publique d'authentification Web Weboauth {privé Weibo Weibo; public weboauth () {// Préparer la clé de consommation et le secret de la consommation // correspondant à l'application SINA Weibo est l'application que vous avez appliquée pour le système clé et secret. System.SetProperty ("Weibo4j.oauth.Consumersecret", Weibo.Consumer_Secret); Weibo = new Weibo (); } // GET DEMANDE TOKEN PUBLIC PUBLICEDTOKKED Selon le nouveau CallBack_Url Public DequetToken GetRequestToken (String BackUrl) {try {// Spécifiez callback_url et obtenez la demande de demande de demande de requestToken = Weibo.getoAuthrequestToken (BackUrl); System.out.println ("Token de demande:" + requestToken.getToken ()); System.out.println ("Secret de jeton de demande:" + requestToken.getTokenSeret ()); Retour demandetoken; } catch (exception e) {System.out.println ("Exception s'est produite lors de l'obtention du jeton de demande!"); e.printStackTrace (); retourner null; }} // Obtenez un jeton d'accès public en fonction de la demande entrante jeton et du vérificateur AccessToken GetTaccessToken (requestToken requestToken, String Verifier) {Try {AccessToken AccessToken = weibo.getTokenseCret (), Verifier. System.out.println ("Token d'accès:" + AccessToken.getToken ()); System.out.println ("Access Token Secret:" + AccessToken.getTokenSeret ()); return AccessToken; } catch (exception e) {System.out.println ("L'exception s'est produite lors de l'obtention d'un jeton d'accès!"); e.printStackTrace (); retourner null; }} // publier Weibo en fonction du jeton d'accès et du contenu public de contenu (AccessToken Access, String Content) {Try {Weibo.SetToken (Access.getToken (), Access.getTokenSetret ()); content = new String (content.getBytes ("gbk"), "utf-8"); Statut status = weibo.updatestatus (contenu); System.out.println ("Publié avec succès sur Weibo:" + Status.GetText () + "."); } catch (UnportEnCoDingException e) {System.out.println ("Exception s'est produite lorsque le contenu de Weibo s'est converti en codage!"); e.printStackTrace (); } catch (WeiboException e) {System.out.println ("Exception s'est produite lorsque Weibo publie une exception!"); e.printStackTrace (); }}} request.jsp est utilisé pour fournir un callback_url (ici, nous le personnalisons en tant que callback.jsp dans ce qui suit). Après avoir obtenu le requestToken, enregistrez la demande de requête dans la session et redirigez la page vers Callback.jsp pour vérification et autorisation. <% @ page contenttype = "text / html; charset = utf-8"%> <% @ page linguisse = "java" import = "weibo4j. *"%> <% @ page linguisse = "java" import = "weibo4j.http. *"%> <% @ page language = "java" import = "weibo4j.util. id = "weboauth" scope = "session" /> <% if ("1" .equals (request.getParameter ("opt"))) {// passer dans callback_url string callback_url = "http: // localhost: 8080 / sinaweibo / callback.jsp"; RequestToken requestToken = weboauth.getRequestToken (callback_url); if (requestToken! = null) {out.println (requestToken.getToken ()); out.println (requestToken.getTokenSecret ()); session.setAttribute ("requestToken", requestToken); String url = requestToken.getAuthorizationUrl () + "& oauth_callback =" + callback_url; System.out.println ("AutorizationUrl:" + URL); //Barebonesbrowserlaunch.openUrl(Callback_url); //Response.SendRedirect (requestToken.getAuthorizationUrl ()); // Redirigez vers la page d'authentification SINA Weibo avec l'adresse de rappel callback_url jointe à la réponse.sendRedirect (URL); } else {out.println ("Erreur de demande"); }} else {%> <a href = "request.jsp? opt = 1"> Veuillez cliquer sur l'authentification OAuth dans la méthode Web! </a> <%}%>
callback.jsp. Après redirection à l'étape précédente, le paramètre OAuth_verifier sera attaché au callback_url. À l'heure actuelle, nous demandons d'obtenir le AccessToken sur la base du paramètre de demande de demande de requête dans la session et du paramètre OAuth_verifier obtenu. Une fois AccessToken obtenu, nous redirigeons la page vers Writeweibo.html, la page qui écrit Weibo.
<% @ page contenttype = "text / html; charset = utf-8"%> <% @ page linguisse = "java" import = "weibo4j.http. *"%> <% @ page linguisse = "java" import = "Weibo4j. * Dans http request String Verifier = request.getParameter ("oAuth_verifier"); out.println ("oauth_verifier:" + vérificateur); System.out.println ("oAuth_verifier:" + Verifier); if (Verifier! = null) {requestToken requestToken = (requestToken) session.getAttribute ("requestToken"); if (requestToken! = null) {AccessToken AccessToken = weboauth.gettaccessToken (requestToken, vérificateur); if (AccessToken! = null) {try {session.setAttribute ("AccessToken", AccessToken); out.println ("5 allez à Writeweibo.html"); Thread.Sleep (5000); Response.SendRedirect ("http: // localhost: 8080 / sinaweibo / writeweibo.html"); } catch (exception e) {e.printStackTrace (); }} else {out.println ("Erreur de demande de jeton d'accès"); }} else {out.println ("Erreur de session de token de demande"); }} else {out.println ("Verifier String Error"); }%> writeweibo.html, un fichier html très simple. <html> <éad- head> <ititle> Publié SINA Weibo </TITME> </ Head> <Body BgColor = "# D0D0D0"> <form Action = "Updateweibo.jsp" Method = "Post"> Veuillez écrire du texte dans les 140 caractères ici: </br> <Textarea name = "weibotext" rows = "3" Cols = "30"> TEST SINA WHEIBO! </ textarea> </br> <input type = "soumi" value = "publish"> <input type = "reset" value = "clear"> </br> </ form> </body> </html> updateweibo.jsp, utilisé pour publier du texte Weibo, c'est-à-dire pour appeler la méthode de mise à jour dans weboauth.java. <% @ Page ContentType = "Text / Html; charSet = UTF-8"%> <% @ page Language = "Java" Import = "Weibo4j.http. *"%> <% @ Page Language = "Java" Import = "Weibo4J. (AccessToken) Session.getAttribute ("AccessToken"); String Weibotext = (String) request.getParameter ("Weibotext"); // La publication continue du même contenu Weibo renverra 400 erreurs weboauth.update (AccessToken, Weibotext); Out.println ("Weibotext publié avec succès!"); %>
Avant d'exécuter, nous devons préparer Tomcat et mettre le fichier source ci-dessus dans le bon répertoire. En outre, vous devez également ajouter le package Commons-HttpClient-3.1.jar dans le package SDK dans le répertoire / web-inf / lib, ainsi que le Weibo4j.jar que j'ai compilé et emballé moi-même (qui est l'implémentation Java spécifique dans la plate-forme ouverte Sina Weibo).
Exécutez Tomcat et accédez à la page Request.jsp dans votre navigateur, comme indiqué dans la figure ci-dessous:
Cliquez sur le lien dans celui-ci, comme indiqué dans la figure ci-dessous (notez les modifications de la barre d'adresse):
L'URL de la barre d'adresse est la suivante:
http://api.t.sina.com.cn/oauth/authorize?oauth_token=efda6f249987d0e6d814f8c3d31a1d1&oauth_callback=http://localhost:8080/sinaweibo/callback.jsp
Remplissez le compte et le mot de passe Sina Weibo spécifiques et valides et autorisez-le. Voici les résultats du remplissage de mon compte Weibo pour le tester et l'autoriser:
L'URL de la barre d'adresse est la suivante:
http: // localhost: 8080 / sinaweibo / writeweibo.html
Cliquez sur "Publier", comme indiqué ci-dessous:
Connectez-vous à Weibo pour le voir, comme indiqué ci-dessous:
Consultez la liste des applications autorisées par ce compte:
À ce stade, c'est probablement ce processus sur la méthode OAuth pour utiliser la plate-forme ouverte Sina Weibo pour publier Weibo.
résumé:
1. En fait, il y a encore de nombreux détails que je n'ai pas mentionnés. J'ai essayé plusieurs fois avant de découvrir le problème, j'ai compris le problème, puis j'ai résolu le problème;
2. Si les cookies de notre connexion aux informations de compte Sina Weibo ont été enregistrées dans le navigateur, vous n'avez pas besoin de saisir les informations du compte lors de l'autorisation. Bien sûr, vous pouvez également le modifier sans utiliser le compte actuel pour l'autorisation;
3. Il existe également des informations saisies par la console, telles que les informations de retour aux jetons, de l'URL et du serveur, qui ne sont pas données dans les captures d'écran.