Android Tumblr oAuth混乱

Nic*_*ick 6 android oauth tumblr signpost

我正在尝试在Android应用中实现Tumblr API.我真的被授权用户,以便他们可以做一些事情,比如发布和查看他们的仪表板.我并不真正理解oAuth,并且Tumblr API文档会跳过它.我不知道我是否应该提示用户提供他们的凭据,或者在我拥有这些凭据之后如何处理这些凭据,或者类似的东西.我将Signpost库添加到我的项目中,但从那以后我一直在摸不着头脑.任何熟悉Android上oAuth的人都会关心我吗?谢谢!

Jan*_* S. 13

是的,文档不是那么好.您应该首先阅读OAuth.Twitter有一个很好的概述.

首先,您需要一个消费者密钥和秘密(您可以通过在tumblr中注册您的应用程序来获取这些密钥).之后,您应该使用Tumblr提供的auth URL来获取用户的授权.通常,您将生成一个请求URL,您可以从中将用户带到他/她将登录并授权您的应用程序的浏览器.这将触发对您的应用程序的回调,您将能够获得oAuth令牌.将其保存在您的应用程序(SharedPreferences)中,这样您就不需要再次要求用户进行身份验证.使用此令牌,您将能够与需要身份验证的Tumblr API进行交互.

请注意,您还可以实现webview,而不是让用户使用浏览器.但是,这需要更多的工作.

我发现最新的路标库与Tumblr不兼容.你需要一些旧版本.前往这里并下载这些文件:

将两个库导入项目.要使用它们,基本上您需要调用以下代码:

CommonsHttpOAuthConsumer consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY,
         CONSUMER_SECRET);
CommonsHttpOAuthProvider provider = new CommonsHttpOAuthProvider(
         REQUEST_TOKEN_URL,
         ACCESS_TOKEN_URL,
         AUTH_URL);
String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL); 
Run Code Online (Sandbox Code Playgroud)

CALLBACK_URL可能是这样的:"tumblrapp://tumblrapp.com/ok".无需在Tumblr设置上设置回调URL.

此外,您还需要设置一个意图过滤器,以便在授权后调用您的应用.确保你的Manifest看起来像这样:

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <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="tumblrapp"/>
            </intent-filter>
Run Code Online (Sandbox Code Playgroud)

现在,在身份验证后,您可以获得这样的令牌:

Uri uri = this.getIntent().getData();
if (uri != null) {
   String token = uri.getQueryParameter("oauth_token");
}
Run Code Online (Sandbox Code Playgroud)

我做了一个快速的示例应用程序 你可以在这里查看.您可能希望将请求移动到后台线程,因为它会阻止UI.