【发布时间】:2021-07-18 13:13:35
【问题描述】:
我知道存在类似的线程,但我找不到适合我的用例的解决方案。
我正在尝试通过 Flutter 制作的移动应用使用 OAuth2 进行身份验证。作为一个例子,我在这里展示了 Android 案例。
我提供的重定向 url 必须以 http(s) 开头,否则身份提供者会拒绝它。我在我的 AndroidManifest.xml 中添加了以下活动:
<activity android:name="com.linusu.flutter_web_auth.CallbackActivity">
<intent-filter android:label="flutter_web_auth" android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="my-app" />
</intent-filter>
</activity>
我正在使用 lib oauth2_client 发出请求。
var myOAuth2Client = new MyOAuth2Client(redirectUri: "http://my-app", customUriScheme: "http");
AccessTokenResponse tknResp = await myOAuth2Client.getTokenWithAuthCodeFlow(
clientId: 'xxxxxxxxxxxxxx',
clientSecret: 'xxxxxxxxxxxxxx',
scopes: ['the.profile']).catchError((onError) {
print("Error $onError");
});
有了这个,我很好地重定向到浏览器中的身份提供者登录页面。使用凭据登录后,我不会被重定向到我的应用程序。相反,我被重定向到浏览器中的无效 url。请注意,如果我强制使用我的应用而不是浏览器打开 url,它会运行良好。
我已阅读有关 Android 应用程序链接的信息,但我知道它需要在服务器端进行编辑,而我无权访问(这里的目标是让独立的移动应用程序进行身份验证)。
有人可以指导我如何重定向到我的应用吗? (如果这是不可能的并且需要我这边的服务器,那么流程是什么?)谢谢! :)
【问题讨论】:
-
您有什么解决办法吗? @Reedy
标签: android flutter mobile oauth-2.0 android-manifest