我正在尝试使用BackgroundDownloader下载Google云端硬盘文件。我已使用REST api对用户进行了身份验证,并获得了访问令牌。我的逻辑符号就是这样。
public async Task<bool> SignIn()
{
var googleUrl = new StringBuilder();
googleUrl.Append("https://accounts.google.com/o/oauth2/auth?client_id=");
googleUrl.Append(Uri.EscapeDataString(GoogleConstants.ClientId));
googleUrl.Append("&scope=https://www.googleapis.com/auth/drive");
googleUrl.Append("&redirect_uri=");
googleUrl.Append(Uri.EscapeDataString(GoogleConstants.CallbackUrl));
googleUrl.Append("&state=foobar");
googleUrl.Append("&response_type=code");
var startUri = new Uri(googleUrl.ToString());
WebAuthenticationBroker.AuthenticateAndContinue(startUri, new Uri(GoogleConstants.CallbackUrl), null, WebAuthenticationOptions.None);
return true;
}
当我创建BackgroundDownloader时,我尝试设置请求标头 - 访问令牌。
BackgroundDownloader downloader = new BackgroundDownloader();
downloader.SetRequestHeader("Authorization", "accesstoken");
DownloadOperation download = downloader.CreateDownload(new Uri(serverLink, UriKind.Absolute), file);
download.Priority = BackgroundTransferPriority.Default;
但我收到了未经授权的错误。我怎么真的应该将我的访问令牌传递给BackgroundDownloader?
[我不想使用任何第三方SDK进行身份验证和下载。]
答案 0 :(得分:0)
最后我发现了问题。它是我在请求中错过的令牌类型。标题看起来应该是这样的,
downloader.SetRequestHeader("Authorization", "Bearer" + "accesstoken");