通过Google Drive API v3使用Google Sign Up

问题描述 投票:0回答:1

我想在我的Android应用程序中添加将文件存储在用户GoogleDrive上的功能。该应用程序使用Xamarin.Android。正如Google文档所述:([https://developers.google.com/drive/api/v3/about-auth#AboutAuthorization

关于授权协议,您的应用程序必须使用OAuth 2.0才能 授权请求。不支持其他授权协议。如果 您的应用程序使用Google登录以及授权的某些方面 为您处理。

Google Sing-In是可能的,应该会更容易。但,我发现的所有Google SingIn示例都以获取用户属性(例如电子邮件或姓氏)为结尾,但是我无法找到如何将接收到的用户属性用于Google云端硬盘或任何其他API授权。例如,从Google网站:

    GoogleSignInAccount account = completedTask.getResult(ApiException.class);

    // Signed in successfully, show authenticated UI.
    updateUI(account);

或在下面的C#示例中:

protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
    base.OnActivityResult(requestCode, resultCode, data);

    if(requestCode == SING_IN_ACTIVITY_RESULT)
    {
        GoogleSignInResult res = Auth.GoogleSignInApi.GetSignInResultFromIntent(data);
        if(res.IsSuccess)
        {
            GoogleSignInAccount googleAccount = res.SignInAccount;
        }
    }
}

而Drive API服务需要UserCredential对象,这是OAuth2过程的结果:

     { //...
        UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
            GoogleClientSecrets.Load(stream).Secrets,
            Scopes,
            "user",
            CancellationToken.None,
            new FileDataStore(credPath, true)).Result;
    }

    // Create Drive API service.
    var service = new DriveService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = ApplicationName,
    });

如何将GoogleSignInAccount转换为UserCredential?

c# xamarin.android google-drive-api google-oauth google-signin
1个回答
0
投票

GoogleSingIn只能登录,您无法将结果转换为UserCredential,然后使用Google驱动器...。

解决方案将在寻找特定的Google Drive API

https://developers.google.com/drive

© www.soinside.com 2019 - 2024. All rights reserved.