Ich versuche, einen einmaligen Google Plus-Autorisierungscode für ein Zugriffstoken auszutauschen. Aber ich bekomme immer noch eine 400 Bad Request. Ich benutze VB.NET. Hier ist der Code:Google API-Token-Endpunkt-POST gibt ungültige Anforderung zurück 400
'We should now have a "good" one-time authorization code stored in "code"
Using Client As New WebClient()
'Dim Client As New WebClient()
Dim values As New NameValueCollection()
Dim Resp
Dim responseString As String
values("code") = Request.QueryString("code")
values("client_id") = ConfigurationManager.AppSettings("google.clientid")
values("client_secret") = ConfigurationManager.AppSettings("google.clientsecret")
values("grant_type") = "authorization_code"
values("redirect_uri") = "http://localhost:3333/MyVacations/default.aspx"
Resp = Client.UploadValues("https://www.googleapis.com/oauth2/v3/token", values)
responseString = Encoding.Default.GetString(Resp)
End Using
Ich bin mir ziemlich sicher, dass dies der Endpunkt ich soll mit https://www.googleapis.com/oauth2/v3/token werden, aber wer weiß? Das verwirrt das nur für mich.
Auch entschuldigen Sie meine Naivität, aber würde jemand erklären, wie der POST-Code, den Google als Beispiel verwendet, sich auf die Webanfrage in meinem obigen Code bezieht? Ich denke, ich verstehe, wie die Werte übersetzen, aber die 3 Kopfzeilen im POST (unten) ... wie wird dies im VB-Code angegeben? Ich vermisse etwas, das für andere wirklich offensichtlich sein muss. Wenn du es also weißt, bitte sag es mir.
POST /oauth2/v3/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded
code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=8819981768.apps.googleusercontent.com&
client_secret={client_secret}&
redirect_uri=https://oauth2-login-demo.appspot.com/code&
grant_type=authorization_code
Ein weiterer Stack Overflow Post sagt etwas über die Daten als Abfrageparameter zu senden (mit ‚&‘ Ich denke,) statt die Daten als Request-Header senden, so ist es etwas falsch entlang einer mit dem Senden von Namevaluecollection?
Entspricht Ihr redirect_uri dem Wert, der zum Abrufen des Autorisierungscodes verwendet wurde? –
Entsprechend der Antwort, die vom POST zurückgegeben wird, erhalte ich einen uri_redirect_mismatch, also sind Sie richtig. Aber ich habe die URL direkt von der Developer Console in meinen Code kopiert und eingefügt und umgekehrt, so dass ich nicht weiß, warum dies geschieht. –