【问题标题】:Why is the GitHub authorization button in the OAuth flow grayed out?为什么 OAuth 流程中的 GitHub 授权按钮显示为灰色?
【发布时间】:2017-11-09 13:11:36
【问题描述】:

我正在构建一个 Android 应用程序,该应用程序使用 OAuth 将用户登录到 GitHub。我按照说明here 这样做了。作为流程的第一部分,我将用户发送到 URL

https://github.com/login/oauth/authorize?scope=repo&client_id=MY_CLIENT_ID

但是,当我在我的 Android 设备上登录时,Authorize xxxx 按钮显示为灰色,我无法单击它。有谁知道这是为什么? (下图大图)

我认为该按钮之前可能没有变灰,这是我第一次运行应用程序并登录时。但是,我不能确定,因为我很着急。

【问题讨论】:

    标签: android github oauth github-api


    【解决方案1】:

    我在 Safari 中遇到了同样的问题,但我找到了一个潜在的原因,网站的内容安全策略设置为:script-src github.githubassets.com

    【讨论】:

      【解决方案2】:

      我绝对支持 @james-ko 所说的 - 必须为 WebView 启用 JS

      但有时它并没有帮助。我发现了更多信息,很乐意在这里分享。

      类似的故事 - 我有一个应用程序应该使用 GitHub OAuth 登录用户,除了“授权”按钮之外一切正常 - 在某些情况下,无论应用什么设置,它都会保持禁用状态。

      这里是总结:

      1. 无论设置和用户行为如何,该按钮在具有 API 22 和 23 的模拟器上始终处于禁用状态(虽然我没有尝试 24-27)。

      2. 它在使用 API 28 和 29 的模拟器上运行良好。

      3. 在真实设备 Pixel 3 (API 29) 上,该按钮最初被禁用,并且有一段时间没有发生任何事情。但是当我在随机的地方两次录下屏幕时,它就被启用了。应用程序重启重现了这种情况:最初禁用的按钮 --> 点击屏幕 --> 按钮被启用。

      显然涉及一些反欺诈机制。

      但它给最终用户带来了糟糕的体验,它看起来像是应用程序中的一个错误,我们对此无能为力:-/

      【讨论】:

        【解决方案3】:

        因此,我将链接粘贴到计算机上的 Chrome 中,并且 OAuth 过程运行良好。我注意到按钮起初是灰色的,但后来变成了亮绿色。这让我想知道:Android WebView 中是否默认启用了 JavaScript?果然,不是。我找到了this answer,它详细说明了如何启用 JS。这是让一切正常工作的关键:

        webView.getSettings().setJavaScriptEnabled(true);
        

        【讨论】:

        • 如果我不使用 webview ,我使用的是 git api ,遇到同样的问题。我们该如何解决。 clientId="2e9c1001acbdbecef8a9";字符串 clientSecret="3ba4b54a344820154a175b8907d1229013f11add"; String redirectUrl="futurestudio://calback";, Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("github.com/login/oauth/authorize" +"?client_id="+clientId+"&scope=repo&redirect_url="+redirectUrl));开始活动(意图);
        猜你喜欢
        • 1970-01-01
        • 2020-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-10
        • 2021-08-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多