【问题标题】:How to provide callback url for a server in an Android app如何在 Android 应用程序中为服务器提供回调 url
【发布时间】: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


    【解决方案1】:

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

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

    PS。我在How to run the Android AppAuth Code Sample的博客上有一些注释。

    【讨论】:

      猜你喜欢
      • 2011-01-20
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多