使用BackgroundDownloader下载Google云端硬盘文件 - Windows Phone(通用)

时间:2015-03-06 02:08:19

标签: oauth-2.0 windows-phone-8.1

我正在尝试使用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进行身份验证和下载。]

1 个答案:

答案 0 :(得分:0)

最后我发现了问题。它是我在请求中错过的令牌类型。标题看起来应该是这样的,

downloader.SetRequestHeader("Authorization", "Bearer" + "accesstoken");