我試圖谷歌日曆集成到我的應用程序,我有一些問題OAuth授權假冒一個RefreshToken。我收到一個沒有問題的AccessToken,但RefreshToken屬性爲空。看行「在這裏ERROR:」標誌着在那裏我遇到的問題爲什麼我沒有從Google OAuth請求中收到RefreshToken?
我Asp.Net MVC控制器(名爲OAuthController
)如下所示:
public ActionResult Index()
{
var client = CreateClient();
client.RequestUserAuthorization(new[] { "https://www.googleapis.com/auth/calendar" }, new Uri("http://localhost/FL.Evaluation.Web/OAuth/CallBack"));
return View();
}
public ActionResult CallBack()
{
if (string.IsNullOrEmpty(Request.QueryString["code"])) return null;
var client = CreateClient();
// Now getting a 400 Bad Request here
var state = client.ProcessUserAuthorization();
// ERROR HERE: The RefreshToken is NULL
HttpContext.Session["REFRESH_TOKEN"] = Convert.ToBase64String(Encoding.Unicode.GetBytes(state.RefreshToken));
return JavaScript("Completed!");
}
private static WebServerClient CreateClient()
{
return
new WebServerClient(
new AuthorizationServerDescription()
{
TokenEndpoint = new Uri("https://accounts.google.com/o/oauth2/token"),
AuthorizationEndpoint = new Uri("https://accounts.google.com/o/oauth2/auth"),
ProtocolVersion = ProtocolVersion.V20
}
, _GoogleClientId, _GoogleSecret);
}
我在谷歌的API文檔看,那我需要確保請求被設置爲offline
的RefreshToken的access_type
發送。如何在我的身份驗證器請求中設置此值?
我已經瘦身我的代碼下來,並試圖查詢谷歌現在,當我得到一個400錯誤請求錯誤。 – 2012-07-05 19:24:07
我通過手動編寫HttpRequests到Google來解決我的問題。我會消毒及郵政編碼爲答案 – 2012-07-06 11:22:35