从未真正使用过OAuth,现在尝试实现它,我想从谷歌和脸书获取访问令牌和个人资料数据。使用Xamarin.Auth。
有了Facebook,没有问题,我指定" http://www.facebook.com/connect/login_success.html"作为重定向网址,我登录后返回到之前的活动。
然而,谷歌并没有那么顺利 - 无法找到任何与Facebook登录成功页面相似的内容,某处找到了建议使用" https://www.googleapis.com/plus/v1/people/me" - 将其添加到重定向网址列表中,但是在登录后我会根据他们的文档得到"Redirect_url_mismatch" A native application: application name
我应该使用" my.package.name:"再次我添加了重定向url白名单,尝试登录,这次登录屏幕后我到达第二个屏幕,我需要确认读取权限,然后我得到非常短的错误,像#34; com。 my.package:/?oauthparameterX =值1 ...."并再次重定向到权限屏幕。
这是我完整的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;
网址:
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}";