Я пытаюсь аутентифицировать пользователя в приложении 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: произошла одна или несколько ошибок.

1
Joe Fioti 13 Апр 2019 в 19:50

2 ответа

Лучший ответ

В итоге я использовал Xamarin Auth. Перейдите по этой ссылке: https: // docs .microsoft.com / EN-US / Xamarin / Xamarin -формы / данных облако / аутентификации / OAuth

0
Joe Fioti 11 Май 2019 в 16:30

С чего вы взяли, что все должно быть сделано в нативном коде? Аутентификация в социальных сетях является очень распространенным сценарием, и для большинства из них уже есть связанные библиотеки. Это для аутентификации Google https://causerexception.com/2017/12 / 03 / Google - нативный - логин - с - Xamarin форм /

0
Ali123 15 Апр 2019 в 07:02