重定向Google OAuth Android的网址

时间:2016-07-18 13:48:55

标签: android xamarin oauth xamarin.android google-oauth

从未真正使用过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}";

1 个答案:

答案 0 :(得分:1)

在上面列出的代码中,您没有给出重定向uri,而是给出了google api的范围。重定向uri的目的是在授权后接收来自google api的响应。响应应为代码。此响应代码用于访问 access_token,refresh_token,id_token等。因此,您必须在项目方面接收此代码。为此,使用重定向uri。 转到您的谷歌控制台,创建项目,添加凭据,然后您将重定向到页面conatains,

enter image description here

您可以找到授权的重定向网址。提供网址,然后使用新的重定向网址配置您的代码。在此之后一切都会好起来的。