So erhalten und speichern Sie Schnittstellen -Anrufanmeldeinformationen auf WeChat, ich werde es Ihnen unten vorstellen
1. Erklärung
* Weitere Informationen finden Sie in den ersten beiden Artikeln für detaillierte Anweisungen.
*Dieser Artikel ist in drei Teile unterteilt:
Die Rolle des Schnittstellenaufrufs für Anmeldeinformationen Access_Token und Erläutern Sie, wie Sie Schnittstellen -Aufruf -Anmeldeinformationen Access_Token erhalten können
Implementieren Sie die Implementierung des im WeChat -Dokuments genannten "Central Control Server", um access_token zu speichern
* Am Ende dieses Artikels werden alle Demonstrationsquellencodes einschließlich der ersten drei Artikel in diesem Artikel angegeben.
Warum müssen Sie Schnittstellenanmeldeinformationen Access_Token erhalten und speichern?
• Beginnen Sie mit der Entwicklung - Rufen Sie Schnittstellenanmeldeinformationen ab
◦Dokument -Adresse: http://mp.weixin.qq.com/wiki/14/9f9c82c1af308e3b14ba9b973f99a8ba.html
• Das offizielle Website -Dokument enthält die folgende Erklärung:
◦Access_Token ist das weltweit eindeutige Ticket des offiziellen Kontos. Access_Token ist erforderlich, wenn jede Schnittstelle des offiziellen Kontos aufgerufen wird. Entwickler müssen es richtig sparen. Die Speicherung von Access_Token muss mindestens 512 Zeichenraum behalten. Die Gültigkeitsdauer von Access_Token beträgt derzeit 2 Stunden und muss regelmäßig aktualisiert werden. Die wiederholte Erfassung führt dazu, dass das, das Sie beim letzten Mal erhalten haben, ungültig ist.
•verstehen:
◦Wir können einfach das Dokument lesen und feststellen, dass viele erweiterte Funktionen, wie z. Dies ist ein globaler Anrufparameter. Das WeChat -Backend muss die Identität basierend auf diesem Parameter bestimmen, um die Sicherheit unseres offiziellen Accountes für WeChat sicherzustellen.
◦ In Anspruch, um die Ausnahme des WeChat -Serverlasts von Programmfehlern im offiziellen Konto zu verhindern, darf die Anrufschnittstelle jedes offiziellen Kontos standardmäßig ein bestimmtes Limit überschreiten. Hier ist WeChat auf 2.000 -mal täglich begrenzt. Wenn wir diesen Parameter häufig aufrufen möchten, müssen wir ihn vom Entwickler manuell speichern, und jeder Access_Token ist 2 Stunden lang gültig.
Rufen Sie die Schnittstelle auf. Aufrufen Anmeldeinformationen Access_Token
• Das offizielle Website -Dokument enthält die folgende Erklärung:
◦Interface -Anrufanforderung Beschreibung
HTTP -Anforderungsmethode: Get
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=appsecret
■ Kehren Sie zur Beschreibung zurück
Unter normalen Umständen wird WeChat das folgende JSON -Paket auf das offizielle Konto zurückgeben:
{"Access_token": "Access_Token", "expires_in": 7200}
Wenn ein Fehler auftritt, gibt WeChat Fehlercodes und andere Informationen zurück. Das Beispiel des JSON -Pakets lautet wie folgt (dieses Beispiel ist ein ungültiger Anhängerfehler):
{"Errcode": 40013, "errmsg": "Ungültiges Appid"}
•verstehen:
◦Get -Anforderung kann diese Methode direkt lokal implementiert werden. Da es sich nur um eine normale Get -Anfrage handelt, ähnlich wie beim Zugriff auf eine URL. Daher müssen Sie diesen Teil des Codes nicht auf den Server hochladen, um direkt zu arbeiten.
◦Das HTTP -Anforderungsprotokoll ist eine GET -Anfrage, was bedeutet, dass wir den Rückgabestream über die GET -Anforderung erhalten müssen, und der Rückgabestream befindet sich in Form von JSON. Beim Anruf müssen wir drei Parameter mit sich führen: Grant_type, Appid und Secret. Unter ihnen sind Appid und Secret die wichtigsten Parameter unseres offiziellen WeChat -Kontos, die im vorherigen Artikel erläutert wurden. Das Rückgabeergebnis ist in zwei Typen unterteilt: korrekte und falsche Ergebnisse. 【Baidu: Json】
◦ In der Tat können wir direkt das Beispiel eingeben, das das Dokument in der Adressleiste angegeben hat: https://api.weixin.qq.com/cgi-ner/token? Grant_type = client_credential & appid = Appid & secret = appsecret sehen die Nachricht wie folgt: "{" Errcode ": 40013," errmsg ":" Ungültiger Appid -Hinweis: [PQKL0120IC11] "}", da dies ein ungültiges Anforderung ist, wird das Ergebnis mit einem Fehler zurückgegeben.
◦Wenn wir die beiden oben genannten Parameter durch unsere Testnummern und AppSecret ersetzen, sehen wir die folgende Meldung: "{" Access_token ":" xrllr3fnf ... badamio "," expires_in ": 7200}", was eine erfolgreiche Erfassung bedeutet.
◦ Jetzt erhalten wir den Rücklaufstream über den Java -Code und den Access_Token.
•erreichen
private statische endgültige long max_time = 7200*1000; // WeChat Ermöglicht maximale Access_Token Validitätszeit (MS) private statische String -Tag = "wixinapitest"; // Tagprivate statische endgültige String -Appid = "Wx889b **** b3666b0b8"; // AppidPrivate statatische Streicher State SecerT = "6DA7676 *** F0A9F15FBF06027856BB"; // Secret Key/**Dieser Testfall zeigt, wie man Access_Token erhält. * Access_Token ist das global einzigartige Ticket des offiziellen Kontos. Access_Token ist erforderlich, wenn jede Schnittstelle des offiziellen Kontos aufgerufen wird. */@Testpublic void getAccess_token () löst ioException {// den Httpsurl-Link aus, der von der API-String urlstring = "https://api.weixin.qqq.com/cgi -bin/token?grant_type=client_credential verlangt wird; // Erstellen Sie eine URL -URL Requrl = neue URL (urlstring); // den Link httpSurlConnection httpsConn = (httpSurlConnection) requrl .OpenConNection (); // den Eingabestream der Verbindung abrufen, um den Antwortinhalt in EingabestreamReader ISR = New InputStreamReader (httpsconn.getInputStream ()) zu lesen; // Lesen Sie den Antwortinhalt des Servers und zeigen Sie char [] chars = new char [1024] an. String reslut = ""; Int len; while ((len = isr.read (chars))! = -1) {reslut += new String (Zeichen, 0, len); } isr.close (); / * * Konvertieren Sie JSON in JavaBean. Ein Jar von Drittanbietern wurde vorgestellt: GSON */ GSON GSON = New GSON (); // Umwandlung des erhaltenen JSON in eine Bean in Java // Hinweis: Access_Token Access_Token ist ein von sich aus erstellter Javabäer. Access_Token Access_Token = gson.fromjson (reslut, new access_token (). GetClass ()); if (access_token.getaccess_token ()! System.out.println ("Die gültige Zeit des Access_Token lautet:" + access_token.getExpires_in () + "S"); } else {system.out.println (Tag + "versäumt, Access_Token zu erhalten, bitte überprüfen"); }} Schnittstellen Sie die Anmeldeinformationen Access_Token auf den Schnittstellen auf.
•Gedanken
Speichern Sie den erhaltenen Access_Token und die aktuelle Zeit in der Datei. Bestimmen Sie beim Extrahieren den Zeitunterschied zwischen der aktuellen Zeit und der im Speicher aufgezeichneten Zeit. Wenn es größer als max_time ist, setze es erneut auf und ersetze den erhaltenen zugegriffenen Inhalt in der Datei. Wenn es weniger als max_time ist, erhalten Sie es direkt.
•erreichen
/ * * Diese Methode implementiert den Erwerb von Access_Token, speichern und speichern nur 2 Stunden Access_Token. Wenn es zwei Stunden überschreitet, ist es wieder auftreten. Wenn es nicht zwei Stunden überschreitet, erhalten Sie es direkt. Diese Methode hängt von *: Public Static String getAccessToken () ab; * * Idee: Speichern Sie den erhaltenen Access_Token und die aktuelle Zeit in der Datei * Beim Extrahieren bestimmen Sie den Zeitunterschied zwischen der aktuellen Zeit und der im Speicher aufgezeichneten Zeit. Wenn es größer als max_time ist, setze es wieder auf und speichere den erhaltenen Zugriff auf die Datei, um den ursprünglichen Inhalt*zu ersetzen*. Wenn er weniger als max_time ist, erhalten Sie diese direkt. */ @Test public void getAedAccess_Token () löst ioException {gson gson = new gson () aus; String maccess_token = null; // access_token zu erhalten; Datei Datei = neue Datei ("temp_access_token.temp"); // Der Ort, an dem Access_Token gespeichert ist // Wenn die Datei nicht vorhanden ist, erstellen Sie if (! Datei.Exists ()). Datei.CreateNewFile (); // Wenn die Dateigröße gleich 0 ist, bedeutet dies, dass sie zum ersten Mal verwendet wird und access_token if (file.length () == 0) {maccess_token = getAccessToken () eingeben; FileOutputStream fos = new FileOutputStream (Datei, False); // access_token at = new Access_token (); at.setaccess_token (maccess_token); at.setExpires_in (System.currentTimemillis () + ""); String json = gson.tojson (at); fos.write ((json) .getBytes ()); fos.close (); } else {// Datei content FileInputStream fis = new FileInputStream (Datei); Byte [] B = neues Byte [2048]; int len = fis.read (b); String mjsonaccess_token = new String (b, 0, len); // Lesen Sie die Dateiinhalts -Access_Token Access_Token = gson.fromjson (mjsonaccess_token, new access_token (). GetClass ()); if (access_token.getExpires_in ()! lange heutzutage = System.currentTimemillis (); Langes Remiantime = Now Time - Savetime; // system.out.println (Tag + "Zeitunterschied:" + remiantime); if (remiantime <max_time) {access_token at = gson.fromjson (mjsonaccess_token, new access_token (). getClass ()); maccess_token = at.getaccess_token (); } else {maccess_token = getAccessToken (); FileOutputStream fos = new FileOutputStream (Datei, False); // access_token at = new Access_token (); at.setaccess_token (maccess_token); at.setExpires_in (System.currentTimemillis () + ""); String json = gson.tojson (at); fos.write ((json) .getBytes ()); fos.close (); }}} System.out.println ("Die erhaltene Access_Token ist:" + maccess_token); } / * * Holen Sie sich den WeChat Server AccessToken. This part is consistent with getAccess_token(), no comments are added*/ public static String getAccessToken() { String urlString = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + APPID + "&secret=" + SECERT; String reslut = null; try {url requrl = new URL (urlstring); HttpsurlConnection httpsConn = (httpsurlConnection) requrl .OpenConnection (); InputStreamReader ISR = NEU InputStreamReader (httpsconn.getInputStream ()); char [] chars = new char [1024]; reslut = ""; Int len; while ((len = isr.read (chars))! = -1) {reslut += new String (Zeichen, 0, len); } isr.close (); } catch (ioException e) {e.printstacktrace (); } Gson gson = new gson (); Access_Token Access_Token = gson.fromjson (reslut, new access_token (). GetClass ()); if (access_token.getaccess_token ()! = null) {return access_token.getaccess_token (); } else {return null; }} Die ersten drei Artikel zeigen den Quellcode: http://xiazai.vevb.com/201606/yuanma/weixinapidemo(vevb.com).rar
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.