2016-07-18 3 views
0

Никогда не работал с OAuth, пытаясь реализовать его сейчас, я хочу получить данные токена доступа и данные профиля из Google и Facebook. Использование Xamarin.Auth.URL-адрес перенаправления для Google OAuth Android

С Facebook нет проблем, я указываю «http://www.facebook.com/connect/login_success.html» как URL-адрес перенаправления, и после входа в систему он возвращается к активности, которую я раньше.

Однако с Google это не так гладко - не мог найти похожие на страницы успеха facebook входа в системе, где нашел предложение использовать «https://www.googleapis.com/plus/v1/people/me», - добавил его для перенаправления URL-адрес белого списка, однако после знака я получил бы "Redirect_url_mismatch" A native application: application name по к их документации я должен использовать «my.package.name:», и снова я добавил, что для перенаправления url-белого списка, попытки входа в систему, на этот раз после входа в экран я получаю второй экран, где мне нужно подтвердить разрешения на чтение и после что я получаю очень короткую ошибку, например, «com.my.package: /? oauthparameterX = value1 ....» и снова перенаправляется на экран разрешения.

Вот мой полный 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}"; 

ответ

1

В перечисленных выше коде, вы не давая перенаправлять URI вместо этого вы дарите сферу Google API. Цель перенаправления uri - получить ответ от google api после авторизации. Ответ должен быть код. Этот код ответа используется для доступа к access_token, refresh_token, id_token и т. Д.. Таким образом, вы должны получить этот код в своей стороне проекта. Для этой цели используется перенаправление uri. Перейдите на Google консоль, создать проект, добавить учетные данные, то вы будете переадресованы на странице conatains,

enter image description here

Вы можете найти авторизованное URL перенаправления. Укажите URL-адрес, затем настройте код с новым URL-адресом перенаправления. После этого все будет хорошо.

Смежные вопросы