Obwohl Sina Weibo Open Platform Development SDK -Downloads in verschiedenen Sprachen bietet, enthält jeweils einige Dokumente für Demo- und Schnittstellenbeschreibung für grundlegende Schnittstellenaufrufe. Nachdem ich heutzutage geduldig versucht habe, bin ich der Meinung, dass die Einführungsanleitung auf der offenen Plattform von Sina Weibo etwas nicht mit den Anmerkungen der Demo -Nutzung im heruntergeladenen Java -Entwicklungspaket Weibo4j -Paket widerspricht. Darüber hinaus ist meine eigene Verständnisfähigkeit begrenzt, was zu vielen unauffälligen Problemen führt. Glücklicherweise habe ich nicht aufgegeben, um es zu verstehen. Weniger Unsinn, Folgendes ist mein Lernprozess.
Wenn Sie Ihre eigene Weibo -Anwendung entwickeln möchten, indem Sie die API Sina Weibo Open Platform aufrufen, besteht der erste Schritt darin, ein Sina Weibo -Konto und ein CSDN -Konto zu haben, da wir diese beiden Konten verwenden müssen, um Weibo -Anwendungen gleichzeitig zu erstellen, um den App -Schlüssel und den heimlichen Schlüssel zu erhalten. Was sind also die Verwendung von App -Schlüssel und geheimen Schlüssel?
Tatsächlich habe ich gerade eine Reihe von Erklärungen auf der offenen Plattform von Sina Weibo gelesen, aber ich habe nicht verstanden, wie der App -Schlüssel und der heimliche Schlüssel nützlich sind. Denn das Wichtigste ist, den gesamten Prozess der OAuth -Authentifizierung und -verfechtigung sowie die Rolle mehrerer Token und 4 URLs im gesamten OAuth -Authentifizierung und -verfechterprozess zu verstehen.
Als ich OAuth zum ersten Mal traf, was keine Ahnung hatte, dachte ich, ich könnte nicht weiter lernen. Glücklicherweise fand ich die folgenden Artikel, die sehr hilfreich sind, um OAuth zu verstehen. Der Link ist wie folgt:
Es gibt 3 Teilnehmer in OAuth, nämlich Benutzer, Dienstleister und Verbraucher. Angenommen, ich möchte eine Anwendungs (App) basierend auf der Sina Weibo Open -Plattform entwickeln, die andere Sina Weibo -Benutzer verwenden können. Ihre Korrespondenz ist wie folgt:
Tatsächlich entspricht unsere App einer Anwendung von Drittanbietern für Benutzer und Anbieter (Sina Weibo-Plattform). Als Drittanbieter-App müssen Sie, wenn Sie auf die vom Benutzer auf der Sina Weibo-Plattform gespeicherten Ressourcen zugreifen möchten, einer Reihe von Authentifizierung und Autorisierung unterzogen, bevor sie funktionieren kann.
Das Folgende ist ein Diagramm, das auf meinem Verständnis der gesamten OAuth -Authentifizierung und Autorisierungsprozess basiert (Sie können einen Blick darauf werfen.
Wenn Sie das obige Flussdiagramm kombinieren, ist dies mein Verständnis für diese Begriffe und die Beschreibung jedes Prozesses:
Verbraucherschlüssel und Verbrauchergeheimnis: Die offenen Plattformen von Sina Weibo werden als App -Schlüssel und geheimen Schlüssel bezeichnet. Der Verbraucher beantragt den Anbieter, seine offene API aufzurufen. Nachdem der Antrag genehmigt wurde, wird der Anbieter dem Verbraucher zugewiesen, der seine Anforderungen entspricht, mit denen eindeutig festgestellt wird, dass der Verbraucher den Anforderungen des Anbieters entspricht.
Entsprechend den Flüssen 1 und 2 in der obigen Abbildung.
Anfrage Token, Anfrage Secret: Wenn der Benutzer auf den Verbraucher zugreift und seinen speziellen Service erhalten möchte, wird der Dienst vom Verbraucher zurückgegeben, nachdem die im Benutzer selbst gespeicherten Ressourcen integriert wurden. Zu diesem Zeitpunkt fordert der Verbraucher den Anbieter auf, ein Anforderungs -Token zu erhalten, mit dem die spezifische Assoziation zwischen dem Verbraucher und dem Benutzer eindeutig identifiziert wird.
Entsprechend den Flüssen 3, 4 und 5 in der obigen Abbildung.
Um 6 zu verarbeiten, muss der Verbraucher den Benutzer zur OAuth -Authentifizierung und Autorisierungsseite leiten, die vom Anbieter bereitgestellt wird. Tatsächlich leitet der Browser mit dem Anforderungs -Token und den angehängten geheimen Parametern für die Anforderungsbeschaffung weiter. Diese URL wird vom Anbieter bereitgestellt.
Als Nächstes, im Prozess 7 und 8, autorisiert der Benutzer den Verbraucher (melden Sie sich normalerweise nur an, indem Sie das Konto und das Kennwort eingeben). Der Anbieter leitet den vom Verbraucher 1 bereitgestellten Callback_url weiter und baut OAuth -Token und OAuth -Verifizierer an die URL -Parameter an.
Process 9 ist der Verbraucher, der Anbieter erneut beantragt, über das Anfrage -Token, das zuvor vom Anbieter erhalten wurde, zu Zugangstoken zu erhalten.
Zugriffsantrieb, Zugriffsgeheimnis: Wenn der Anbieter im Prozess 10 ein Zugriffs -Token ohne Benutzerautorisierung zurückgibt, wird er verwendet, um die im Anbieter eines bestimmten Verbrauchers gespeicherten Ressourcen und Informationen eindeutig zu identifizieren. Anschließend kann der Verbraucher das erhaltene Zugriffstoken und das Zugriffsgeheimnis verwenden, um auf die vom entsprechenden Benutzer gespeicherten Ressourcen zugreifen zu können.
Nach der Integration und Bedienung der Benutzerinformationen in Prozess 11 können die spezifischen Serviceergebnisse an den Benutzer zurückgegeben werden.
Durch das obige Verständnis des OAuth-Prozesses wissen wir, dass der Benutzer das Konto, das Passwort usw. nicht durchgesickert hat, um sich beim Anbieter beim Verbraucher von Drittanbietern anzumelden. Gleichzeitig kann der Benutzer die speziellen Dienste des Verbrauchers nutzen. Was für ein kluger und sicherer Betriebsprozess!
Darüber hinaus hat der Verbraucher in der obigen Abbildung unterschiedliche Anfragen vom Anbieter gestellt. Tatsächlich bietet Anbieter 3 URLs mit unterschiedlichen Funktionen für den Zugriff auf Verbraucher. Screenshots dieser 3 URLs in der Sina Weibo Open -Plattform sind wie folgt:
Verwenden Sie die OAuth -Überprüfung und veröffentlichen Sie auf Sina Weibo Open Plattform
Um die API der Sina Weibo Open -Plattform zu verwenden, sollten Sie zunächst den von Sina zugewiesenen App -Schlüssel und App -Geheimnis erhalten. Nachfolgend finden Sie den von Sina zugewiesenen App -Schlüssel und App -Geheimnis, nachdem ich die Anwendung erstellt habe (dies muss vertraulich gehalten werden).
Dann laden Sie den Weibo SDK herunter, ich benutze Weibo4j in Java.
Ändern Sie den App -Key und das App -Geheimnis der Klasse wibo.java im SDK -Paket zum App -Taste und App -Geheimnis, das Sie gerade erhalten haben, wie in den folgenden Anweisungen zur Verwendung gezeigt:
Nachdem Sie diese abgeschlossen haben, können Sie mit dem Schreiben von Code basierend auf der bereitgestellten Demo beginnen. wie folgt:
WeboAuth.java wird verwendet, um den App -Key und das App -Geheimnis zu initialisieren, das für die Klasse wibo.java erforderlich ist, und stellt Methoden zur GetRequestToken () und GetAccessToken () zur Verfügung, um RequestToken- und Zugriffs -Token zu erhalten. Die erforderlichen Parameter sind im Code angezeigt. Zusätzlich wird eine Methode zur Veröffentlichung eines Textes Weibo für update () bereitgestellt.
Paket Weibo4j.Examples; Import Weibo4j.status; Import Weibo4j.Weibo; Import Weibo4j.WeiboException; Import Weibo4j.http.accessToken; Import Weibo4j.http.RequestToken; importieren java.io.unsupportedenCodingException; // Web Authentifizierung öffentliche Klasse Weboauth {private Weibo Weibo; public weboauth () {// Vorbereitung des Verbrauchersschlüssels und des Verbrauchergeheimnisses // entspricht der Anwendung von Sina Weibo ist die App, die Sie für das Schlüssel- und Geheimschlüsselsystem beantragt haben. System.setProperty ("Weibo4j.oauth.consumerSecret", Weibo.consumer_secret); Weibo = New Weibo (); } // Anfrage token public requestToken gemäß dem eingehenden Callback_url public RequestToken getRequestToken (String backurl) {try {// Callback_url angeben und Anforderungs -Token RequestToken RequestToken = Weibo. System.out.println ("Anfrage Token:" + RequestToken.GetToken ()); System.out.println ("Anfrage Token Secret:" + RequestToken.gettokenSecret ()); Rückgabeanforderung; } catch (Ausnahme e) {System.out.println ("Ausnahme ist beim Erhalten des Anfrage -Tokens!"); E. printstacktrace (); null zurückkehren; }} // Access Token public basierend auf dem eingehenden Anforderungs -Token und Verifier AccessToken GetAccessToken (RequestToken RequestToken, String -Verifier) {try accessToken AccessToken = wibo.getoAuthactoces (), AnreveToken .getToken (), RequestToken.GETOKENSECRETTOKESCRET (), ENIFIERSECRET (); System.out.println ("Access -Token:" + AccessToken.GetToken ()); System.out.println ("Access -Token -Geheimnis:" + AccessToken.gettokeneScret ()); AccessToken zurückgeben; } catch (Ausnahme e) {System.out.println ("Ausnahme ist beim Erhalten von Zugriffstoken aufgetreten!"); E. printstacktrace (); null zurückkehren; }} // poste Weibo basierend auf dem eingehenden Zugriffstoken und Inhalt public void Update (AccessToken Access, String -Inhalt) {try {wibo.settoken (access.getToken (), Access.gettokenecret ()); content = new String (content.getBytes ("gbk"), "utf-8"); Status Status = Weibo.updatestatus (Inhalt); System.out.println ("erfolgreich auf Weibo gepostet:" + status.getText () + "."); } catch (UnsupportedenCodingException e) {System.out.println ("Ausnahme ist aufgetreten, wenn der in Codierung von Weibo konvertierte Inhalt von Weibo!"); E. printstacktrace (); } catch (wiboxception e) {System.out.println ("Ausnahme ist aufgetreten, wenn Weibo eine Ausnahme veröffentlicht!"); E. printstacktrace (); }}} request.jsp wird verwendet, um callback_url bereitzustellen (hier passen wir es im Folgenden als Callback.jsp an). Speichern Sie nach dem Erhalten der Anfrage die Anfrage in die Sitzung und leiten Sie die Seite in Callback.jsp zur Überprüfung und Autorisierung um. < %@ page contentType = "text/html; charset = utf-8" %> < %@ page Sprache = "java" import = "wibo4j. id = "wboAuth" Scope = "Sitzung"/> <% if ("1" .Equals (request.getParameter ("opt")) {// In Callback_url String callback_url = "http: // localhost: 8080/Sinawobo/callback.jsp"; RequestToken requestToken = weboAuth.getRequestToken (callback_url); if (requestToken! = null) {out.println (RequestToken.GetToken ()); out.println (requestToken.gettokenecret ()); Session.SetAttribute ("RequestToken", RequestToken); String url = requestToken.getAuthorizationurl ()+"& oAuth_callback ="+callback_url; System.out.println ("Authorizationurl:" + url); //BarebonesBrowserlaunch.openurl(callback_url); //response.sendredirect (RequestToken.getAuthorizationurl ()); // Umleiten Sie die SINA Weibo Authentifizierungsseite mit der Rückrufadresse von Callback_url an die Antwort. SendRect (URL); } else {out.println ("Anforderungsfehler"); }} else { %> <a href = "request.jsp? opt = 1"> Klicken Sie in der Webmethode auf die OAuth -Authentifizierung! </a> < %} %>
callback.jsp. Nach dem Umleiten im vorherigen Schritt wird der Parameter oAuth_verifier an die Callback_url angehängt. Zu diesem Zeitpunkt bewerben wir uns, um das AccessToken basierend auf dem in der Sitzung gespeicherten und dem erhaltenen Parameter oAuth_verifier zu erhalten. Sobald AccessToken erhalten ist, leiten wir die Seite in writeWeibo.html, die Seite, auf der Weibo schreibt, um.
<%@ page contentType = "text /html; charset = utf-8"%> <%@ page Sprache = "java" import = "wibo4j.http. in http request String verifier = request.getParameter ("oAuth_verifier"); out.println ("OAuth_Verifier:"+Verifier); System.out.println ("oAuth_verifier:"+Verifier); if (verifier! if (requestToken! if (accessToken! out.println ("5 gehen zu writeWeibo.html"); Thread.sleep (5000); response.sendredirect ("http: // localhost: 8080/Sinaweibo/writeWeibo.html"); } catch (Ausnahme e) {e.printstacktrace (); }} else {out.println ("Zugriff auf Token -Anforderungsfehler"); }} else {out.println ("Token -Sitzungsfehler anfordern"); }} else {out.println ("Verifier -String -Fehler"); } %> writeWeibo.html, eine sehr einfache HTML -Datei. <html> <Head> <titels> veröffentlicht Sina Weibo </title> </head> <body bgcolor = "#d0d0d0"> <form action = "updateweibo.jsp" methode = "post"> Bitte schreiben Sie in 140 Zeichen hier: </br> </. TextArea name = "wiibotext" rows = "3" cols = "cols </textArea> </br> <Eingabe type = "value =" veröffentlichen "> <Eingabe type =" reset "value =" clear "> </br> </form> </body> </html> updateWeibo.jsp, verwendet zum Posten von Text Weibo, dh die Aktualisierungsmethode in WeBoAuth.java. <%@ page contentType = "text /html; charset = utf-8"%> <%@ page Sprache = "java" import = "wibo4j.http. (AccessToken) Session.getAttribute ("AccessToken"); String Weibotext = (String) request.getParameter ("Weibotext"); // Kontinuierliche Veröffentlichung desselben Weibo -Inhalts gibt 400 Fehler WOBOAUTH.UPDATE (AccessToken, Weibotext) zurück; out.println ("Weibotext erfolgreich veröffentlicht!"); %>
Vor dem Laufen müssen wir Tomcat vorbereiten und die obige Quelldatei in das richtige Verzeichnis einfügen. Darüber hinaus sollten Sie das COMMONS-HTTPCLIENT-3.1.JAR-Paket im SDK-Paket im Verzeichnis /web-inf /lib /lib sowie in die Weibo4j.jar, die ich selbst kompiliert und verpackt hat, (die spezifische Java-Implementierung in der Sina weibo Open-Plattform) hinzufügen.
Führen Sie Tomcat aus und greifen Sie in Ihrem Browser auf die Seite Request.jsp zu, wie in der folgenden Abbildung gezeigt:
Klicken Sie auf den Link darin, wie in der Abbildung unten gezeigt (beachten Sie die Änderungen in der Adressleiste):
Die URL der Adressleiste lautet wie folgt:
http://api.t.sina.com.cn/oauth/authorize?oauth_token=efda6f249877d0e6d814f8c3d31a1d1&oAuth_callback=http:/Localhost
Füllen Sie das spezifische und gültige Sina Weibo -Konto und das Passwort ein und genehmigen Sie es. Im Folgenden sind die Ergebnisse des Ausfüllens meines Weibo -Kontos zum Testen und Autorisieren:
Die URL der Adressleiste lautet wie folgt:
http: // localhost: 8080/Sinaweibo/writeWeibo.html
Klicken Sie wie unten gezeigt auf "Publish":
Melden Sie sich bei Weibo an, um es anzuzeigen, wie unten gezeigt:
Schauen Sie sich die Liste der von diesem Konto autorisierten Bewerbungen an:
Zu diesem Zeitpunkt ist es wahrscheinlich dieser Prozess über die OAuth -Methode, die Sina Weibo Open -Plattform zu verwenden, um Weibo zu posten.
Zusammenfassung:
1. Tatsächlich gibt es immer noch viele Details, die ich nicht erwähnt habe. Ich habe viele Male versucht, bevor ich das Problem entdeckte, das Problem verstanden und dann das Problem gelöst habe.
2. Wenn die Cookies für unsere Anmeldung bei Sina Weibo -Kontoinformationen im Browser gespeichert wurden, müssen Sie die Kontoinformationen bei der Genehmigung nicht eingeben. Natürlich können Sie es auch ändern, ohne das Girokonto zur Autorisierung zu verwenden.
3.. Es gibt auch einige Informationen, die von der Konsole eingegeben wurden, z.