【发布时间】:2021-01-06 21:20:28
【问题描述】:
我刚开始在 Android 上使用 Strava API。为了使用它,我首先需要成功设置 OAuth2。为此,我选择使用 Scribe 库,因为我在之前的实现中使用过它。
身份验证发生在 MainActivity 的 onCreate() 方法中。测试应用程序使用 MainActivity 旁边的两个类。 StravaOAuth20ServiceImpl 用于配置 API 请求令牌和撤销令牌。 StravaOAuth2Api 包含 API 的端点。这些看起来不错。
我没有从回调中返回代码。这就是我卡住的地方。为了正常工作,需要在开发者设置中为 Strava、Android Manifest 和 API EndPoint 调用正确设置回调。
我目前正在开发模式下工作。网站上说“localhost 和 127.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