如何在没有Google Play服务的Android设备上获取Google API的身份验证令牌?

时间:2014-01-08 00:53:30

标签: android authentication oauth google-oauth google-play-services

我的应用中相当重要的一部分是用户使用Google帐户登录的能力。对于Play商店中的应用版本,我已使用AccountManager和Google Play服务。我现在遇到的问题是如何使用常规oauth来安装没有安装GPS的设备(如Kindles)。

我的一般想法是使用回调网址(在AndroidManifest中处理)弹出用户的默认网络浏览器,这样我就可以从那里获取oauth令牌:

public void requestTokenFallback(){
    Uri.Builder builder = new Uri.Builder().scheme("https")
            .authority("accounts.google.com")
            .appendPath("o")
            .appendPath("oauth2")
            .appendPath("auth")
            .appendQueryParameter("response_type", "token")
            .appendQueryParameter("client_id", CLIENTID)
            .appendQueryParameter("scope", SCOPE)
            .appendQueryParameter("redirect_uri", "myapp-oauth");
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, builder.build());
    activity.startActivity(browserIntent);
}

如果我将response_type设置为"code",则允许我登录并向我提供复制和粘贴的令牌。如果我将其设置为"token"并使用redirect_uri urn:ietf:wg:oauth:2.0:oob(因为这就是Google API控制台中的内容),我会收到一条消息“redirect_uri不支持response_type = token:urn:ietf :WG:OAuth的:2.0:OOB“

我遇到的问题是,我无法弄清楚如何在Google API控制台端配置此功能,以便我可以将myapp-oauth://access_token:XXXXXXXXX设置为OAuth流重定向到的地址

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

查看我的帖子了解详情。 https://plus.google.com/+NaveenAgarwal/posts/AztHNnQh7w6

客户端可以使用以下任一自定义方案:      com.example.myapp:/ oauth2Callback      com.googleusercontent.apps.1234-ABC:/ oauth2callback