我正在尝试使用 OAuth2 为 Google Analytics API 应用程序设置离线访问,并且我正在使用 ASP.NET 发布我的授权代码以换取刷新令牌,但我无法从服务器获得响应给我刷新令牌。
我已将 MSDN 文档中的示例代码用于发布请求,因此我只能假设这是正确的,但是我收到错误消息“远程服务器返回错误:(400) System.Net.HttpWebRequest 的错误请求。获取响应()“:
using System;
using System.IO;
using System.Net;
using System.Text;
WebRequest request = WebRequest.Create ("https://accounts.google.com/o/oauth2/token?code=xxxmyauthorizationcodexxx&client_id=xxxxxxxxx.apps.googleusercontent.com&client_secret=xxxxxxxxxxxx&redirect_uri=https://mysite.com/oauth2callback&grant_type=authorization_code");
request.Method = "POST";
string postData = "code=xxxmyauthorizationcodexxx&client_id=xxxxxxxxx.apps.googleusercontent.com&client_secret=xxxxxxxxxxxx&redirect_uri=https://mysite.com/oauth2callback&grant_type=authorization_code";
byte[] byteArray = Encoding.UTF8.GetBytes (postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream ();
dataStream.Write (byteArray, 0, byteArray.Length);
dataStream.Close ();
WebResponse response = request.GetResponse ();
dataStream = response.GetResponseStream ();
StreamReader reader = new StreamReader (dataStream);
string responseFromServer = reader.ReadToEnd ();
reader.Close ();
dataStream.Close ();
response.Close ();
我已成功使用 GET 方法来检索授权代码,并且我正在关注此文档:https ://developers.google.com/accounts/docs/OAuth2WebServer#handlingtheresponse
我还使用 https 网站发出请求,并且在授权码到期时手动刷新授权码。有没有人有这个问题的解决方案?
编辑:对于遇到相同问题的任何人,首先查看下面 aeijdenberg 的回复,但我的解决方案是我用于代码参数的授权码会立即过期 - 我一直在刷新我的页面而没有请求新的页面。要获取数据,只需显示 responseFromServer 变量中的内容。