3

我可以使用web authentication sample登录 Google 。这是代码:

    private async void Launch_Click(object sender, RoutedEventArgs e) 
    {    
        if(GoogleClientID.Text == "") 
        { 
            rootPage.NotifyUser("Please enter an Client ID.", NotifyType.StatusMessage); 
        } 
        else if(GoogleCallbackUrl.Text == "") 
        { 
            rootPage.NotifyUser("Please enter an Callback URL.", NotifyType.StatusMessage); 
        } 

        try 
        { 
            String GoogleURL = "https://accounts.google.com/o/oauth2/auth?client_id=" + Uri.EscapeDataString(GoogleClientID.Text) + "&redirect_uri=" + Uri.EscapeDataString(GoogleCallbackUrl.Text) + "&response_type=code&scope=" + Uri.EscapeDataString("http://picasaweb.google.com/data"); 

            System.Uri StartUri = new Uri(GoogleURL); 
            // When using the desktop flow, the success code is displayed in the html title of this end uri 
            System.Uri EndUri = new Uri("https://accounts.google.com/o/oauth2/approval?"); 

            DebugPrint("Navigating to: " + GoogleURL); 

            WebAuthenticationResult WebAuthenticationResult = await WebAuthenticationBroker.AuthenticateAsync( 
                                                    WebAuthenticationOptions.UseTitle, 
                                                    StartUri, 
                                                    EndUri); 
            if (WebAuthenticationResult.ResponseStatus == WebAuthenticationStatus.Success) 
            { 
                OutputToken(WebAuthenticationResult.ResponseData.ToString()); 
            } 
            else if (WebAuthenticationResult.ResponseStatus == WebAuthenticationStatus.ErrorHttp) 
            { 
                OutputToken("HTTP Error returned by AuthenticateAsync() : " + WebAuthenticationResult.ResponseErrorDetail.ToString()); 
            } 
            else 
            { 
                OutputToken("Error returned by AuthenticateAsync() : " + WebAuthenticationResult.ResponseStatus.ToString()); 
            } 
        } 
        catch (Exception Error) 
        { 
            // 
            // Bad Parameter, SSL/TLS Errors and Network Unavailable errors are to be handled here. 
            // 
            DebugPrint(Error.ToString()); 
        } 
}       

应用程序通过身份验证后,我不确定如何使用文件操作。他们是 Google 提供的一个 .Net 库,但它似乎不适用于 Windows 商店应用程序。

这是通过 http 上传的 doc 文件:

谷歌云端硬盘 API:https ://developers.google.com/drive/manage-uploads

我尝试使用HttpClient 示例,但不确定如何使用从身份验证示例中获得的身份验证令牌。

4

1 回答 1

0

看起来您最好使用 WinRT 中的BackgroundUploader类,然后使用SetRequestHeader方法将您的身份验证令牌放入 Authorization 标头中。应该处理您文件的BackgroundUploader各个部分(基于 Google Drive 文档和 MSDN 文档),因此使用下面的标题和方法,我认为这就是您所需要的。

POST /upload/drive/v2/files?uploadType=media HTTP/1.1
Host: www.googleapis.com
Content-Type: image/jpeg
Content-Length: {number_of_bytes_in_JPEG_file}
Authorization: {your_auth_token}

{JPEG data}

对于较小的文件类型,您应该能够执行类似的操作System.Net.HttpClient-是一篇关于在该类型上设置标题的帖子。

于 2013-06-26T00:35:32.463 回答