2013-10-19 36 views
0

調用谷歌API奮力調用谷歌雲https://apis-explorer.appspot.com/apis-explorer/?base=https%3A%2F%2Finnovative-glass.appspot.com%2F_ah%2Fapi#p/mirror/v1/我如何從.NET/C#Web應用程序

託管的API了我的理解,API是公開爲REST服務。我需要從.net應用程序進行其他服務調用。

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

我的代碼的指導:

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(); 

我得到未經授權例外。 我的理解是正確的嗎?我做對了嗎?

+0

我(像很多這裏)不知道.NET庫的細節。如果你能夠窺視HTTP來回發送,那麼很多人可能會發現問題。 –

回答

0

你從哪裏得到AccessToken,你確定它仍然是一個有效的標記?請記住,訪問令牌在生成後大約一個小時過期,但可以提前撤銷。

點擊innovation-glass.appspot.com上的登錄按鈕會給我一個原點不匹配錯誤,所以看起來您可能也有配置問題。

你是否能夠使用API​​ Explorer來使它工作?

1

似乎雲終端不使用Google API默認接受access_token作爲查詢參數。按照Discovery document相當於查詢參數是oauth_token所以它應該工作:

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

或者(這在我看來是更好的解決方案),還可以設置請求的Authorization頭,而不是添加令牌的查詢參數:

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