【发布时间】:2021-03-07 04:13:19
【问题描述】:
我想使用一个 oauth2 服务器对我的应用进行身份验证。
我知道 应该发生什么。我想开始一个活动,打开浏览器或有一个带有登录网站 url 的 web 视图。 但是,在该 url 中,我必须设置我的应用程序的回调 uri,以便 oauth2 服务器可以回答。
我已经知道我必须将它添加到我在 androidmanifest 中的活动中才能接收回调:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="oauth-testing" />
</intent-filter>
而且我也知道我必须像这样调用包含登录网站的活动:
Intent intent = new Intent();
intent.setData(Uri.parse("https://someOAuthServer.com?redirect_uri=oauth-testing://UNKNOWN"));
startActivityForResult(intent, REQUEST_CODE);
那是我还没有得到的部分。我了解 oauth 服务器从 url 参数 redirect_uri 获取回调 uri,并且我了解 oauth-testing 告诉我的设备/应用程序哪个活动接收回调。但是,我不太清楚上面示例中UNKNOWNstands 应该传递什么“url”。
我必须设置自己的 IP 吗?如果是,是哪一个?一台设备可以有多个 IP。有关系吗?我见过这样做的一种方法:“oauth-testing:///”。他们只是放了三个斜线。那究竟是做什么的?这还有效吗?
当我尝试使用“oauth-testing:///”时,当我通过导航栏“返回”按钮“返回”我的活动时,我会收到回调。但是,它显然不包含任何数据。
我的方法错了吗?我是否还需要致电startActivityForResult,或者这会向我的活动发送混合信号?
更新
我刚刚发现“https:///”==“https://localhost”。所以,这显然是错误的。我能想到的最后一件事是在该网址中发送我的 IP。但是怎么做?还有哪一个?
【问题讨论】:
标签: android android-studio authentication oauth-2.0 callback