1

我正在尝试使用快速入门示例将 google.drive 用于 .net。我已经通过 nuget 安装了 dll,但收到以下错误,我缺少 google.apis.service 的引用或程序集。任何帮助,将不胜感激

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DotNetOpenAuth.OAuth2;
using Google.Apis.Authentication.OAuth2;
using Google.Apis.Authentication.OAuth2.DotNetOpenAuth;
using Google.Apis.Drive.v2;
using Google.Apis.Drive.v2.Data;
using Google.Apis.Util;
using Google.Apis.Services;

public partial class Default3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {

         String CLIENT_ID = "some_id";
            String CLIENT_SECRET = "some_secret";

            // Register the authenticator and create the service
            var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description, CLIENT_ID, CLIENT_SECRET);
            var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization);
            var service = new DriveService(new BaseClientService.Initializer()
            {
                Authenticator = auth
            });

            File body = new File();
            body.Title = "My document";
            body.Description = "A test document";
            body.MimeType = "text/plain";

            byte[] byteArray = System.IO.File.ReadAllBytes("document.txt");
            System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);

            FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, "text/plain");
            request.Upload();

            File file = request.ResponseBody;
            Console.WriteLine("File id: " + file.Id);
            Console.WriteLine("Press Enter to end this process.");
            Console.ReadLine();
        }

        private static IAuthorizationState GetAuthorization(NativeApplicationClient arg)
        {
            // Get the auth URL:
            IAuthorizationState state = new AuthorizationState(new[] { DriveService.Scopes.Drive.GetStringValue() });
            state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
            Uri authUri = arg.RequestUserAuthorization(state);

            // Request authorization from the user (by opening a browser window):
            Process.Start(authUri.ToString());
            Console.Write("  Authorization Code: ");
            string authCode = Console.ReadLine();
            Console.WriteLine();

            // Retrieve the access token by using the authorization code:
            return arg.ProcessUserAuthorization(authCode, state);
        }
    }
4

1 回答 1

0
  1. 尝试从我们的示例存储库运行 Drive.Sample - https://code.google.com/p/google-api-dotnet-client/source/browse/?repo=samples#hg%2FDrive.Sample。您可以在那里看到一个有效的实现(它还包括媒体上传和下载代码)。

  2. 尝试重新开始并安装以下两个软件包(我不确定您是否已经这样做了):Google.Apis.Drive.v2 - https://www.nuget.org/packages/Google.Apis.Drive。 v2/ Google.Apis.Authetnication - https://www.nuget.org/packages/Google.Apis.Authentication

更新(2014 年 1 月 22 日):

几个月前,我们重新实现了 OAuth 2.0 库并删除了 DotNetOpenAuth 中的依赖项。您可以在公告博客中阅读有关它的更多信息。专门搜索 1.6.0-beta 版本。

您还应该查看我们的 OAuth 2.0 页面 - https://code.google.com/p/google-api-dotnet-client/wiki/OAuth2

另一个很好的参考是我们的示例存储库。所有示例都已升级为使用新的 Google.Apis.Auth 包。

于 2013-09-19T19:32:47.827 回答