J'ai parcouru le web en essayant d'obtenir une réponse à cette question et j'en ai trouvé beaucoup mais aucun d'entre eux ne fonctionne. Google exige que l'authentification se passe dans le navigateur et non dans un WebView. Je l'ai mis en œuvre comme ceci pour Android:Utilisation de Google pour me connecter à mon application en utilisant Xamarin Forms et Xamarin.Auth
var activity = this.Context as Activity;
var auth = new OAuth2Authenticator(
clientId: "xxxx.apps.googleusercontent.com",
scope: "",
authorizeUrl: new Uri("https://accounts.google.com/o/oauth2/auth"),
redirectUrl: new Uri("myredirecturi"));
auth.Completed += (sender, eventArgs) => {
if (eventArgs.IsAuthenticated)
{
App.SuccessfulLoginAction.Invoke();
App.SaveToken(eventArgs.Account.Properties["access_token"]);
}
};
activity.StartActivity(auth.GetUI(activity));
Et comme ça pour iOS:
var auth = new OAuth2Authenticator(
clientId: "xxxx.apps.googleusercontent.com", // your OAuth2 client id
scope: "",
authorizeUrl: new Uri("https://accounts.google.com/o/oauth2/auth"),
redirectUrl: new Uri("myredirecturi"));
auth.Completed += (sender, eventArgs) =>
{
App.SuccessfulLoginAction.Invoke();
if (eventArgs.IsAuthenticated)
{
App.SaveToken(eventArgs.Account.Properties["access_token"]);
}
PresentViewController(auth.GetUI(), true, null);
};
Mais cela fait exactement ce que je ne veux pas faire (ouvre une WebView) et chaque réponse que j'ai trouvé fait exactement cela. Comment puis-je faire correctement pour que le navigateur s'ouvre et retourne à mon application quand c'est fait?
En outre, je sais que la portée spécifie ce que je veux faire, et dans ce cas, c'est juste une connexion, mais je n'ai pas encore trouvé un exemple de ce qu'il faut réellement mettre là.
Tout exemple sera vraiment apprécié.
J'ai trouvé cette question similaire [link] (https://stackoverflow.com/questions/45750554/xamarin-forms-google-authenticateion-error-disallowed-useragent?rq=1) et la réponse indique que si elle s'exécute sur un émulateur sans Chrome installé, il retournera à WebView. C'est ce que je faisais, mais j'ai débogué sur mon téléphone et j'ai eu le même problème. –