【问题标题】:Android Google Drive OAuth with CustomTabsIntent带有 CustomTabsIntent 的 Android Google Drive OAuth
【发布时间】:2023-03-03 10:09:02
【问题描述】:

我一直在尝试让 google OAuth 在 android 上运行,但我不断遇到障碍。

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

当我尝试在 Google OAuth 意图中使用该 URL 方案时,我收到以下错误:

经过一番谷歌搜索,我在 stackoverflow 上找到了 this 答案,告诉我将我的 URL 方案重新格式化为 com.myapp.myscheme:/oauth,所以我将 redirect_uri 设置为 com.loop.loop:/oauth,因为 com.loop 是我的包名,loop是我的方案,oauth 是我的主机。

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

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

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

这是我用来运行 chrome 自定义标签的代码:

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

这是我正在使用的 OAuth URL:

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

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

【问题讨论】:

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


    【解决方案1】:

    嗯,我可以通过this 弄清楚。

    显然对于 google oauth,intent 过滤器必须如下所示:

    <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 作为您的重定向URL(oauth 部分可以命名为任何名称)

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多