Tôi đang cố gắng trao đổi mã ủy quyền Google Plus một lần cho mã thông báo truy cập. Nhưng tôi tiếp tục nhận được 400 Yêu cầu không hợp lệ. Tôi đang sử dụng VB.NET. Đây là mã:Điểm cuối mã thông báo API Google trả về Yêu cầu Không hợp lệ 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
Tôi chắc chắn đây là điểm cuối mà tôi cho là đang sử dụng https://www.googleapis.com/oauth2/v3/token nhưng ai biết? Các Google Discovery Document chỉ muddles này cho tôi.
Cũng tha thứ cho sự ngây thơ của tôi nhưng ai đó sẽ giải thích cách mã POST mà Google sử dụng làm ví dụ liên quan đến Yêu cầu web trong mã của tôi ở trên? Tôi nghĩ rằng tôi hiểu làm thế nào các giá trị dịch, nhưng 3 dòng tiêu đề trong POST (dưới đây) ... làm thế nào điều này được quy định trong mã VB? Tôi đang thiếu một cái gì đó mà phải thực sự rõ ràng cho người khác vì vậy nếu bạn biết, xin vui lòng cho tôi biết.
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
Stack Overflow Post Một nói điều gì đó về việc gửi dữ liệu như tham số truy vấn (sử dụng '&' Tôi đoán) thay vì gửi các dữ liệu như tiêu đề yêu cầu, như vậy là có cái gì đó sai trái với việc gửi cùng một NameValueCollection?
Chuyển hướng_ khớp với giá trị được sử dụng để nhận mã ủy quyền? –
Theo phản hồi được trả về bởi POST, tôi nhận được một uri_redirect_mismatch, vì vậy bạn đang trên. Nhưng tôi đã sao chép và dán URL trực tiếp từ Bảng điều khiển dành cho nhà phát triển vào mã của tôi và ngược lại vì vậy tôi đang thua lỗ vì sao điều này xảy ra. –