我使用Xamarin.auth在我的Xamarin表单应用程序中成功实现了登录过程。现在我想连接到Google API并上传AppData。这是我试过的代码, 我倾向于使用令牌获取GoogleCredential并将此凭据提供给Google API,但它失败了。
grant execute on [Database] to [domain\UserLogin]
request.ResponseBody始终为null。我认为它与凭证有关。
我尝试使用
var store = AccountStore.Create();
var SavedAccount = store.FindAccountsForService(GoogleDriveBackup.Auth.Constants.AppName).FirstOrDefault();
GoogleCredential credential2 = GoogleCredential.FromAccessToken(SavedAccount.Properties["access_token"]);
var driveService = new Google.Apis.Drive.v3.DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential2,
ApplicationName = "myApp",
});
FilesResource.CreateMediaUpload request;
var filePath = Path.Combine(path, filename);
using (var stream = new System.IO.FileStream(filePath,
System.IO.FileMode.Open))
{
request = driveService.Files.Create(
fileMetadata, stream, "application/json");
request.Fields = "id";
request.Upload();
}
var file = request.ResponseBody;
但是上面的案例需要客户端秘密,而我在创建的时候并没有这样做,以及#34; Android App"在谷歌控制台和登录使用ClientId。所以我读到了我应该创造的地方"其他"在谷歌控制台中使用ClientId和Client Secret,这对我来说没什么意义,因为我使用不同的客户端ID登录。无论如何,我也试过了,但回答是空的。 那么这里的交易是什么?如何实现我的目标?
答案 0 :(得分:1)
google .net客户端库不支持xamarin。我真的很惊讶你让它工作到目前为止。您将要遇到的主要问题是身份验证,因为您已经注意到.net客户端库的凭据类型将是浏览器,本机或api密钥。移动(Android Ios)客户端无法运行,因为您没有秘密,验证方法不同,客户端库无法执行此操作。
我唯一的建议就是用自己的xamarin来计算Oauth2身份验证,然后像现在一样构建TokenResponse。然后,如果您可以将dll导入项目,则可以将该令牌提供给Google .net客户端库。
据我所知,我们不打算在不久的将来支持使用Google .net clinet库的xamarin,请参阅984 840 1167