如何在Android应用中为服务器提供回调网址

时间:2019-01-21 16:49:37

标签: android android-studio authentication oauth-2.0 callback

我想使用一台oauth2服务器来验证我的应用程序。

我知道会发生什么。我想开始一个活动,该活动打开浏览器或具有包含登录网站URL的Webview。 但是,在该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告诉我的设备/应用哪个活动接收了回调。但是,我不太清楚在上面的示例中UNKNOWN所在的地方应该传递什么“ url”。

我必须设置自己的IP吗?如果是,是哪一个?一台设备可以具有多个IP。有关系吗?我见过一种做到这一点的方法:“ oauth-testing:///”。他们只用了三个斜杠。这到底是做什么的?这甚至有效吗?

当我尝试使用“ oauth-testing:///”时,通过导航栏“后退”按钮“返回”我的活动时,我会收到一个回调。但是,它显然不保存任何数据。

我的方法错误吗?我甚至需要打电话给startActivityForResult还是会向我的活动发送混合信号?

更新 我刚刚发现“ https:///” ==“ https://localhost”。所以,那显然是错误的。我能想到的最后一件事是在该URL中发送我的IP。但是如何?哪一个?

1 个答案:

答案 0 :(得分:0)

建议集成Google AppAuth Library来为您处理登录,这遵循最新的安全建议。

他们有一个您可以运行的示例-如果您可以运行该示例,则应该能够将相同的原理应用于自己的应用。

希望这会有所帮助,

加里

PS。如果有帮助,我的博客上How to run the Android AppAuth Code Sample上有一些注释。