Аутентификация Google в формах Xamarin - PullRequest
1 голос
/ 13 апреля 2019

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

Ответы [ 2 ]

0 голосов
/ 11 мая 2019

В итоге я использовал Xamarin Auth.Ссылка на эту ссылку: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/authentication/oauth

0 голосов
/ 15 апреля 2019

Откуда вы взяли, что все должно быть сделано в нативном коде?Аутентификация в социальных сетях является очень распространенным сценарием, и для большинства из них уже есть связанные библиотеки.Это для аутентификации Google https://causerexception.com/2017/12/03/google-native-login-with-xamarin-forms/

...