#c# #xamarin.forms #xamarin.android #google-authentication
#c# #xamarin.forms #xamarin.android #Google-аутентификация
Вопрос:
Я пытаюсь аутентифицировать пользователя в приложении Xamarin Forms. Я считаю, что это должно быть сделано по-разному для каждой платформы, поэтому я использую функцию в MainActivity для аутентификации при запуске приложения. Я использовал Google.ЧИСТАЯ документация на их сайте, но я получаю некоторые ошибки.
Я напрямую скопировал код Google и получаю credentials.json через встроенный ресурс. Проблема возникает, когда я пытаюсь настроить учетные данные с помощью GoogleWebAuthorizationBroker.Авторизуйте синхронизацию. В коде Google для credPath задано значение token.json. Я получаю сообщение об ошибке, что у меня нет разрешения на это. Затем я попытался использовать Android.OS.Environment.ExternalStorageDirectory и теперь я получаю несколько ошибок. Я не вижу отдельных ошибок, только системных.Исключение 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)).Resu<
Console.WriteLine("Credential file saved to: " credPath);
}
Я ожидал, что откроется окно, позволяющее пользователю войти в свою учетную запись Google. Я получаю систему.Исключение AggregateException: произошла одна или несколько ошибок.
Комментарии:
1. Вы можете обратиться к этому link.docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud /… , И это код этого demo.developer.xamarin.com/samples/xamarin-forms/WebServices /…
Ответ №1:
Откуда у вас возникла идея, что все должно выполняться в машинном коде? Аутентификация в социальных сетях — очень распространенный сценарий, и для большинства из них уже существуют привязанные библиотеки. Это для аутентификации Google https://causerexception.com/2017/12/03/google-native-login-with-xamarin-forms /
Комментарии:
1. Я попробовал эту ссылку и получил ошибки. Причина, по которой я думал, что она должна зависеть от платформы, заключается в том, что она использует пользовательские вкладки для отображения входа в систему и эквивалент iOS. В конце концов я заставил его работать на Android с помощью этого руководства docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud /…
Ответ №2:
В итоге я использовал аутентификацию Xamarin. Обратитесь к этой ссылке: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/authentication/oauth