我想在我的 Android 应用中启用“将活动上传到 Strava”。为此,我需要一个令牌。Strava 使用 OAuth2,我认为在 Web 应用程序中进行身份验证和获取令牌真的不是什么大问题。
但是当在原生 Android 应用程序中使用它时,我必须在WebView
. 如果用户选择“使用 Google 登录”,那么 Google 身份验证会创建一个 403,因为它拒绝在 WebView 内进行登录,请参阅这篇文章。
所以我遵循了使用AppAuth for Android的建议。他们声称该过程仅适用于准备与本机应用程序通信的 OAuth 服务器:
通常,AppAuth 可以与任何支持本机应用程序的授权服务器 (AS) 一起使用,无论是通过自定义 URI 方案重定向还是应用程序链接。假设所有客户端都是基于 Web 或要求客户端保持客户端机密的机密性的 AS 可能无法正常工作。
在再花几个小时寻找解决方案(更像是反复试验)之前,我决定问你:
是否可以对 Strava 用户进行身份验证并获得所需的令牌 ( Authenticate: Bearer abc9897...
)?
- 通过“使用 Google 登录”
- 通过“使用 Facebook 登录”
- 通过用户名+密码
我看到的问题是:至少在使用 Google 登录时,涉及 2 个 OAuth 身份验证过程,它必须在浏览器中运行,而不是在 WebView 中运行。如何拦截这两个进程并在一天结束时获得令牌?