2016-07-18 9 views
0

Nie wirklich mit OAuth gearbeitet, versucht, es jetzt zu implementieren, möchte ich Zugriff Token und Profildaten von Google und Facebook erhalten. Verwenden von Xamarin.Auth.Umleitung URL für Google OAuth Android

Mit Facebook gibt es keine Probleme, ich gebe "http://www.facebook.com/connect/login_success.html" als Weiterleitungs-URL an und nachdem ich mich eingeloggt habe, geht es zurück zu der Aktivität, die ich vorher hatte.

jedoch mit Google es nicht so glatt ist - nicht ähnlich wie Facebook Login Erfolg Seiten finden konnte, fand irgendwo Vorschlag „https://www.googleapis.com/plus/v1/people/me“ zu verwenden - hat es url weiße Liste zu umleiten, aber nach dem Login Ich habe nach bekommen würde "Redirect_url_mismatch" A native application: application name zu ihrer Dokumentation sollte ich "my.package.name:" verwenden und wieder habe ich hinzugefügt, um url whitelist umleiten, versucht, sich anzumelden, dieses Mal nach dem Anmeldebildschirm komme ich zum zweiten Bildschirm, wo ich Leseberechtigungen und danach bestätigen muss dass ich einen sehr kurzen Fehler bekomme wie "com.my.package: /? oauthparameterX = value1 ...." und werde erneut zum Berechtigungsbildschirm weitergeleitet.

Hier ist meine komplette OAuth2Authenticator:

var auth = new OAuth2Authenticator(
      clientId: SocialIds.GooglePlusId, 
      clientSecret: SocialIds.GooglePlusSecret, 
      scope: OAuthUrl.GoogleScope, 
      authorizeUrl: new Uri(OAuthUrl.GoogleAuthorize), 
      redirectUrl: new Uri("https://www.googleapis.com/plus/v1/people/me"), 
      accessTokenUrl: new Uri("https://accounts.google.com/o/oauth2/token"), 
      getUsernameAsync: null); 
      auth.AllowCancel = false; 

Urls:

public static string GoogleAuthorize = "https://accounts.google.com/o/oauth2/auth"; 
public static string GoogleScope = "https://www.googleapis.com/auth/userinfo.email"; 
public static string GoogleRedirect = "https://www.googleapis.com/plus/v1/people/me"; 
public static string GoogleUserInfo = "https://www.googleapis.com/oauth2/v1/userinfo?access_token={0}"; 

Antwort

1

In den oben aufgeführten Code, Sie geben nicht die Umleitung uri stattdessen Sie den Umfang der Google api geben. Der Zweck von redirect uri ist es, die Antwort von Google API nach der Autorisierung zu erhalten. Die Antwort sollte ein Code sein. Dieser Antwortcode wird für den Zugriff auf access_token, refresh_token, id_token usw. verwendet. Sie müssen diesen Code also auf Ihrer Projektseite erhalten. Zu diesem Zweck wird die Weiterleitungs-URL verwendet. Gehen Sie zu Ihrem Google-Konsole erstellen Projekt, Anmeldeinformationen hinzufügen, dann werden Sie auf eine Seite conatains sein umleiten,

enter image description here

Sie die autorisierte Umleitungs-URL finden. Geben Sie die URL ein und konfigurieren Sie Ihren Code mit der neuen Weiterleitungs-URL. Alles wird gut danach.