簡體   English   中英

如何從.NET / C#Web應用程序調用Google API

[英]How to call Google API from .NET/C# Web Application

我正在努力調用Google Cloud中托管的API https://apis-explorer.appspot.com/apis-explorer/?base=https%3A%2F%2Finnovative-glass.appspot.com%2F_ah%2Fapi#p/mirror / v1 /

據我了解,API公開為REST服務。 我需要從.net應用程序進行休息服務調用。

我已經完成了OAuth身份驗證。 我正在按照https://developers.google.com/accounts/docs/OAuth2WebServer給出的指導傳遞access_token

我的代碼:

UriBuilder uriBuilder = new UriBuilder("https://innovative-glass.appspot.com/_ah/api/mirror/v1/timeline");
string userId = Session["userId"] as string;
var state = Utils.GetStoredCredentials(userId);
NameValueCollection queryParameters = HttpUtility.ParseQueryString(uriBuilder.Query);
queryParameters.Set("access_token", state.AccessToken);
uriBuilder.Query = queryParameters.ToString();

var request = (HttpWebRequest)WebRequest.Create(uriBuilder.ToString());
request.Method = "GET";
var response = (HttpWebResponse)request.GetResponse();

我收到未經授權的異常。 我的理解是對的嗎? 我做對了嗎?

似乎雲端點未使用接受access_token作為查詢參數的Google API默認值。 根據發現文檔 ,等效查詢參數為oauth_token因此它應適用於:

queryParameters.Set("oauth_token", state.AccessToken);

另外,(我認為這是更好的解決方案),您還可以設置請求的Authorization標頭,而不是將令牌添加為查詢參數:

request.Headers.Add("Authorization", "Bearer " + state.AccessToken);

您從哪里獲得AccessToken,並且確定它仍然是有效的令牌? 請記住,訪問令牌會在生成后約一個小時后過期,盡管可以更早撤消。

單擊novative-glass.appspot.com上的登錄按鈕會給我一個原點不匹配錯誤,因此您似乎也可能遇到配置問題。

您僅使用API​​ Explorer就能使它正常工作嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM