使用CustomTabsIntent的Android Google云端硬盘OAuth

时间:2018-01-11 18:02:56

标签: android oauth google-oauth deep-linking android-customtabs

我一直试图让谷歌OAuth在Android上工作,我不断遇到障碍。

现在,在我的清单中,我已经为我的重定向网址添加了自定义网址方案和主机,如下所示:

OAuth custom scheme and host

当我尝试在Google OAuth意图中使用该网址方案时,出现以下错误:

URL scheme error

经过一些谷歌搜索后,我在stackoverflow上找到this回答,告诉我将我的网址方案重新格式化为com.myapp.myscheme:/oauth,因此我将redirect_uri设置为com.loop.loop:/oauth,因为com.loop是我的包名,loop是我的方案,oauth是我的主人。

尝试之后,我收到了这个错误:

Redirect URI mismatch

此错误告诉我,我需要在某处注册我的重定向URI,因此我转到我注册了client_id的Google API控制台。但是,实际上没有地方可以注册我的重定向URI:

Google API Console

出于某种原因,使用com.loop:/oauth有效,但授权后它不会重定向回我的应用。相反,它只是转到Google主页。

以下是我用来运行Chrome自定义标签的代码:

CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent chromeIntent = builder.build();
chromeIntent.launchUrl(this, Uri.parse(url));

这是我正在使用的OAuth网址:

https://accounts.google.com/o/oauth2/auth

我不知道我应该在这做什么,而且文档不是很有帮助。我也知道有一个Android Google Auth库,但我对此并不感兴趣,因为这是Google特有的,我只是想制作一个通用的OAuth控制器。我也尝试过使用WebView,但Google不允许通过WebView使用OAuth。请帮忙

1 个答案:

答案 0 :(得分:0)

我能够从this找出来。

显然对于谷歌oauth,意图过滤器必须如下所示:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="[YourPackageName]" />
</intent-filter>

[YourPackageName]替换为您的Android应用包名称,并使用[YourPackageName]:/oauth作为重定向网址(oauth部分可以命名为任何内容)

所以呃...感谢谷歌记录无处