更新來進行響應。我需要添加授權頭,如下面的答案,但我也相信我的特殊用例的問題是訪問令牌(我通過Postman驗證)需要更多的範圍來完全驗證我,這是有道理的,因爲此API包含調查我嘗試訪問的內容也與Google帳戶相關聯。一旦我將額外的訪問調查問卷所需的額外範圍與授權標題代碼一起添加到令牌請求中,我就能夠成功連接。get調用的API,谷歌用「未授權」
上添加範圍爲C#代碼更多信息可以在這裏找到:http://www.oauthforaspnet.com/providers/google/
希望這有助於任何人都遇到類似的問題。謝謝大家!
我試圖做一個GET調用谷歌的API,但它一直以「未授權」響應,而我到Gmail登錄我。我已經在StartUp.Auth.cs中實現了Google+登錄功能,甚至保存了訪問令牌供以後使用。
那麼,如何讓HttpClient的授權嗎?
我有一個訪問令牌可用的,但我不知道如何正確地傳遞進去。我見過用戶名和密碼的例子,但是如果我已經有訪問令牌,我不需要傳遞這些參數。如果有的話,我應該能夠讓用戶重定向到登錄頁面,而不是在運行解決方案之前註銷時才需要。
我期待什麼時候運行項目,GET調用的結果是以json的形式返回,但它總是說我是「未經授權」,我可能在某處丟失了一行代碼。 ..
這裏是我使用的代碼:
using (HttpClient client = new HttpClient())
{
string _url = "https://www.googleapis.com/consumersurveys/v2/surveys?key={MY_API_KEY}";
client.BaseAddress = new Uri(_url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
using (HttpResponseMessage response = client.GetAsync(_url).Result)
{
if (response.IsSuccessStatusCode)
{
using (HttpContent content = response.Content)
{
var Content = content.ReadAsStringAsync();
ViewBag.GoogleResponse = Content.ToString();
}
}
else
{
// THIS IS ALWAYS UNAUTHORIZED!
ViewBag.GoogleResponse = response.StatusCode + " - " + response.ReasonPhrase;
}
}
}
請想法或建議幫助。謝謝!
嘗試:'client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(「Bearer」,「xxx」);'其中xxx是您的令牌 –
如果您根據https://developers.google.com/identity獲取令牌/ protocols/OAuth2然後我會說這應該工作。令牌被授權的範圍是否擴展到您正在嘗試執行的操作? ViewBag.GoogleAccessToken是否被填充? –
是的,我已經測試了在頁面渲染上打印輸出的令牌,並且它在進行GET調用之前設置。你和別人有同樣的答案,所以我會嘗試更多的東西並報告發生的事情。謝謝! – ForeverLearningAndCoding