0

我正在尝试编写一个 Android 应用程序来访问并向用户显示 Feedly 订阅。

为此,我需要向 Feedly API 发布一个 URL,然后它会返回登录页面的 HTML 代码。

要发布的 URL 示例:

https://sandbox7.feedly.com/v3/auth/auth?client_id=sandbox&redirect_uri=http%3A%2F%2Flocalhost&scope=https://cloud.feedly.com/subscriptions&response_type=code

在这里,我使用http://localhost作为重定向 URI,因为我没有为这个应用程序托管任何东西。

用户登录后,Feedly API 将代码重定向到http://localhost

现在,我有 2 个问题: 1. 我不知道如何在 Android 上显示用于登录的网页。我该怎么做并让用户登录?这种目的的最佳做法是什么?2. 如何获取作为参数发送回重定向 URI 的访问令牌?

对于第一个问题,也许我可以按照另一个问题中的建议使用 webview。 如何在android中显示网页?

但是,我该如何让代码返回到 redirect_uri ?

谢谢。

4

1 回答 1

0

我通过使用正确的 URL 调用移动浏览器解决了这个问题:

String url = "http://cloud.feedly.com/v3/auth/auth?client_id=xxxx&redirect_uri=myownuri%3A%2F%2F&scope=https://cloud.feedly.com/subscriptions&response_type=code";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
finish();

然后通过在清单文件中注册自定义 URI 来获取重定向的 URL:

<activity
    android:name=".BrowserActivity"
    android:label="Feedly Login" >
   <intent-filter>
        <data android:scheme="myownuri" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
</activity>

然后我在我的活动中解析返回的参数:

Uri data = this.getIntent().getData();
if (data != null && data.isHierarchical()) {
    String url = this.getIntent().getDataString();
于 2018-03-29T15:48:17.323 回答