Я пытаюсь аутентифицировать пользователя в приложении Xamarin Forms. Я считаю, что это должно быть сделано по-разному для каждой платформы, поэтому я использую функцию в MainActivity для аутентификации при запуске приложения. Я использовал документацию Google .NET на их сайте, но получаю некоторые ошибки.
Я непосредственно скопировал код Google и получил credentials.json через встроенный ресурс. Проблема возникает, когда я пытаюсь настроить учетные данные с помощью GoogleWebAuthorizationBroker.AuthorizeAsync. В коде Google для credPath установлено значение token.json. Я получаю сообщение об ошибке, что у меня нет разрешения на это. Затем я попытался использовать Android.OS.Environment.ExternalStorageDirectory, и теперь я получаю несколько ошибок. Я не вижу отдельных ошибок, только System.AggregateException: произошла одна или несколько ошибок.
UserCredential credential;
var assembly = typeof(MainActivity).GetTypeInfo().Assembly;
using (var stream =
assembly.GetManifestResourceStream("Briefing.Droid.credentials.json"))
{
// The file token.json stores the user's access and refresh tokens, and is created
// automatically when the authorization flow completes for the first time.
string credPath = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.Path, "token.json");
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
Console.WriteLine("Credential file saved to: " + credPath);
}
Я ожидал, что откроется окно, которое позволит пользователю войти в систему с помощью своей учетной записи Google. Я получаю System.AggregateException: произошла одна или несколько ошибок.