【问题标题】:API Callback_URL Invalid CallsAPI Callback_URL 无效调用
【发布时间】:2021-01-06 21:20:28
【问题描述】:

我刚开始在 Android 上使用 Strava API。为了使用它,我首先需要成功设置 OAuth2。为此,我选择使用 Scribe 库,因为我在之前的实现中使用过它。

身份验证发生在 MainActivity 的 onCreate() 方法中。测试应用程序使用 MainActivity 旁边的两个类。 StravaOAuth20ServiceImpl 用于配置 API 请求令牌和撤销令牌。 StravaOAuth2Api 包含 API 的端点。这些看起来不错。

我没有从回调中返回代码。这就是我卡住的地方。为了正常工作,需要在开发者设置中为 Strava、Android Manifest 和 API EndPoint 调用正确设置回调。

我目前正在开发模式下工作。网站上说“localhost127.0.0.1 已列入白名单”,所以我在 callback_url 中使用了这些。对于两者,我都会收到以下 JSON 作为响应:

{
"message": "Bad Request",
"errors": [
{
"resource": "Application",
"field": "redirect_uri",
"code": "invalid"
}
]
}

所以这两个调用都是无效的..

- https://www.strava.com/oauth/authorize?response_type=code&client_id=25016&redirect_uri=127.0.0.1

- https://www.strava.com/oauth/authorize?response_type=code&client_id=25016&redirect_uri=localhost

一个相关的问题是关于 callback_url 的形式。我为 FitBit 做了同样的事情,并使用了“http://callback_myapplication”形式的回调。为此,我必须在我的 Android Manifest 中设置“主机”和“方案”(参见下面的代码)。当我尝试在我的应用程序设置中这样做时,我收到一条错误消息“字段必须是一个域,没有 //”(请参阅​​下面的打印屏幕)。这是我第一次看到这个。那是没有“方案”的回调吗?

<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:host="127.0.0.1"
            android:scheme="http"/>
    </intent-filter>

在此先感谢您的帮助!

【问题讨论】:

    标签: android web-services callback oauth-2.0


    【解决方案1】:

    Strava 的官方文档在这里: https://developers.strava.com/docs/authentication/

    根据他们的文档,localhost 和 127.0.0.1 都被列入白名单。因此,无论应用程序页面上的设置如何,重定向都应该适用于 localhost。这也是我的经验:重定向到 localhost 的任何端口都应该可以。

    当需要设置一个真实的 URL 时,回调域设置应该只是域名。没有协议(例如 http/https),没有端口号。例如,只需“myapp.domain.com”。

    【讨论】:

      【解决方案2】:

      按照OAuth2 documentation,您必须使用您在授权设置中包含的完全相同的值。

      因此在你的情况下 redirect_uri 参数应该是:

      http://127.0.0.1
      

      最好的!

      【讨论】:

      • 这仍然不起作用..我的完整代码可以在“github.com/NVwingh84/StravaAPITest”上找到,如果你有时间检查会很棒..
      • 根据我使用 Strava 的经验,这不是真的。如果您尝试包含“http”,Web UI 实际上会出错。它会说“这个字段必须只是一个域,没有斜线或路径。”如果包含端口号,它不会在 UI 中生成错误,但会导致重定向引发错误。所以最后,它应该只是域名。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 2013-08-20
      相关资源
      最近更新 更多