3

c# では、Google ドライブ上のファイルを読み書きしたいのですが、ほとんどのサンプル アプリケーションではコンソールを使用して、ログイン試行から返される引数を収集していることがわかります。これをwinformsアプリで行いたいです。

        String CLIENT_ID = "XXXX";
        String CLIENT_SECRET = "XXXX";

        // 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;

認証に関しては、返されたコードをユーザーがコピーして貼り付ける必要がないようにしたいので、Google サンプル ヘルパーを多用しましたが、もっと簡単な方法があるはずです!

プライベート スタティック IAuthorizationState GetAuthorization(NativeApplicationClient クライアント) {

        const string STORAGE = "XXXX";
        const string KEY = "XXXX";
        string scope = "";

        // Check if there is a cached refresh token available.
        IAuthorizationState state = AuthorizationMgr.GetCachedRefreshToken(STORAGE, KEY);
        if (state != null)
        {
            try
            {
                client.RefreshToken(state);
                return state; // Yes - we are done.
            }
            catch (DotNetOpenAuth.Messaging.ProtocolException ex)
            {
                //CommandLine.WriteError("Using existing refresh token failed: " + ex.Message);
            }
        }

        // Retrieve the authorization from the user.
        state = AuthorizationMgr.RequestNativeAuthorization(client, scope);
        AuthorizationMgr.SetCachedRefreshToken(STORAGE, KEY, state);
        return state;
    }

これを機能させるにはどうすればよいですか? 設定する「スコープ」とは何ですか?

私は数え切れないほどの記事を読みましたが、簡単ではないようです.winformsアプリの例を持っている人はいますか?

4

1 に答える 1