- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试按照以下示例在我的 android 应用程序中实现 tumblr 登录:https://github.com/jansanz/TumblrOAuthDemo .
我可以获得请求 token 。但是当我试图检索 AccessToken 时,它给了我一个异常。这是代码:
public class TumblrDemoActivity extends Activity {
private static final String TAG = "TumblrDemo";
private static final String PREFS = "prefs_tumblr";
private static final String PREF_TOKEN = "pref_token_tumblr";
private static final String PREF_TOKEN_SECRET = "pref_token_secret_tumblr";
private static final String REQUEST_TOKEN_URL = "http://www.tumblr.com/oauth/request_token";
private static final String ACCESS_TOKEN_URL = "http://www.tumblr.com/oauth/access_token";
private static final String AUTH_URL = "http://www.tumblr.com/oauth/authorize";
// Taken from Tumblr app registration
private static final String CONSUMER_KEY = "consumer key from tumblr app";
private static final String CONSUMER_SECRET = "consumer secret from tumblr app";
private static final String CALLBACK_URL = "tumblrdemo://www.android-ios-tutorials.com";//"tumblrdemo://tumblrdemo.com/ok";
CommonsHttpOAuthConsumer consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
CommonsHttpOAuthProvider provider = new CommonsHttpOAuthProvider(
REQUEST_TOKEN_URL,
ACCESS_TOKEN_URL,
AUTH_URL);
SharedPreferences prefs;
String token;
String tokenSecret;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
prefs = getSharedPreferences(PREFS, Context.MODE_PRIVATE);
consumer.setMessageSigner(new HmacSha1MessageSigner());
// It uses this signature by default
// consumer.setMessageSigner(new HmacSha1MessageSigner());
// To get the oauth token after the user has granted permissions
Uri uri = this.getIntent().getData();
if (uri != null) {
Log.d(TAG, "accessToken : "+consumer.getToken());
Log.d(TAG, "accessTokenSecret : "+consumer.getTokenSecret());
//retrieve token and tokenSecret saved in retrieveRequestToken() call
this.token = prefs.getString(PREF_TOKEN, null);
this.tokenSecret = prefs.getString(PREF_TOKEN_SECRET, null);
Log.d(TAG, "this.token : "+token);
Log.d(TAG, "this.tokenSecret : "+tokenSecret);
consumer.setTokenWithSecret(token, tokenSecret);
Log.d(TAG, "consumer.token : "+consumer.getToken());
Log.d(TAG, "consumer.tokenSecret : "+consumer.getTokenSecret());
String token = uri.getQueryParameter("oauth_token");
String verifier = uri.getQueryParameter("oauth_verifier");
Log.v(TAG, "Token:" +token);
Log.v(TAG, "Verifier:" +verifier);
try {
provider.retrieveAccessToken(consumer, verifier);
Log.d(TAG, "accessToken retrieveAccessToken : "+consumer.getToken());
Log.d(TAG, "accessTokenSecret retrieveAccessToken : "+consumer.getTokenSecret());
} catch (OAuthMessageSignerException e) {
e.printStackTrace();
} catch (OAuthNotAuthorizedException e) {
e.printStackTrace();
} catch (OAuthExpectationFailedException e) {
e.printStackTrace();
} catch (OAuthCommunicationException e) {
e.printStackTrace();
}
} else {
String authUrl;
try {
authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL);
Log.v(TAG, "Auth url:" + authUrl);
Log.d(TAG, "accessToken : "+consumer.getToken());
Log.d(TAG, "accessTokenSecret : "+consumer.getTokenSecret());
//save tokens in preferences
SharedPreferences.Editor editor = prefs.edit();
editor.putString(PREF_TOKEN, consumer.getToken());
editor.putString(PREF_TOKEN_SECRET, consumer.getTokenSecret());
editor.commit();
startActivity(new Intent("android.intent.action.VIEW", Uri.parse(authUrl)));
} catch (OAuthMessageSignerException e) {
e.printStackTrace();
} catch (OAuthNotAuthorizedException e) {
e.printStackTrace();
} catch (OAuthExpectationFailedException e) {
e.printStackTrace();
} catch (OAuthCommunicationException e) {
e.printStackTrace();
}
}
}
@Override
protected void onResume() {
super.onResume();
Log.v(TAG, "onResume");
}
第一次调用 provider.retrieveRequestToken()
就可以了。我可以检索 token 和 tokenSecret。但是当我尝试通过调用 provider.retrieveAccessToken(consumer,oauth_verifier);
获取 accessToken 时,我得到了一个 OAuthCommunicationException
OAuthCommunicationException 的堆栈跟踪是:
04-02 11:34:14.735: W/System.err(19535): oauth.signpost.exception.OAuthCommunicationException: Communication with the service provider failed: Service provider responded in error: 400 (Bad Request)
04-02 11:34:14.735: W/System.err(19535): at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:218)
04-02 11:34:14.735: W/System.err(19535): at oauth.signpost.AbstractOAuthProvider.retrieveAccessToken(AbstractOAuthProvider.java:108)
04-02 11:34:14.735: W/System.err(19535): at org.jfsd.tumblrdemo.TumblrDemoActivity.onCreate(TumblrDemoActivity.java:87)
04-02 11:34:14.735: W/System.err(19535): at android.app.Activity.performCreate(Activity.java:5066)
04-02 11:34:14.745: W/System.err(19535): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1102)
04-02 11:34:14.745: W/System.err(19535): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)
04-02 11:34:14.745: W/System.err(19535): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368)
04-02 11:34:14.745: W/System.err(19535): at android.app.ActivityThread.access$600(ActivityThread.java:151)
04-02 11:34:14.745: W/System.err(19535): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330)
04-02 11:34:14.745: W/System.err(19535): at android.os.Handler.dispatchMessage(Handler.java:99)
04-02 11:34:14.755: W/System.err(19535): at android.os.Looper.loop(Looper.java:155)
04-02 11:34:14.755: W/System.err(19535): at android.app.ActivityThread.main(ActivityThread.java:5536)
04-02 11:34:14.755: W/System.err(19535): at java.lang.reflect.Method.invokeNative(Native Method)
04-02 11:34:14.755: W/System.err(19535): at java.lang.reflect.Method.invoke(Method.java:511)
04-02 11:34:14.755: W/System.err(19535): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1074)
04-02 11:34:14.755: W/System.err(19535): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:841)
04-02 11:34:14.755: W/System.err(19535): at dalvik.system.NativeStart.main(Native Method)
04-02 11:34:14.765: W/System.err(19535): Caused by: oauth.signpost.exception.OAuthCommunicationException: Service provider responded in error: 400 (Bad Request)
04-02 11:34:14.765: W/System.err(19535): at oauth.signpost.AbstractOAuthProvider.handleUnexpectedResponse(AbstractOAuthProvider.java:245)
04-02 11:34:14.765: W/System.err(19535): at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:193)
04-02 11:34:14.765: W/System.err(19535): ... 16 more
感谢任何帮助。
最佳答案
我使用 oauth sign post 和 jumblr 创建了一个用于 Tumblr 登录的小型库。你可以在这里找到它:
Tumblr Login API Using oauth sign post
我希望这个库对遇到同样问题的其他人有所帮助。
关于android - 使用 SignPost 在 Android 中登录 Tumblr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22810226/
我正在使用 Clarity Signposts并需要它的状态(无论是打开还是关闭)。我正在使用 *clrIfOpen 结构指令并为其分配了 isOpen 变量。 isOpen 最初为 false,但在
我正在尝试按照以下示例在我的 android 应用程序中实现 tumblr 登录:https://github.com/jansanz/TumblrOAuthDemo . 我可以获得请求 token
我一直在尝试学习如何使用 oAuth 1.0a 向服务器验证 Android 应用程序的身份(我知道它已经过时了,但这是我被迫使用的。),并且我一直在关注有关如何将应用程序连接到 oAuth1.0a
我有一个自定义的 Xcode 13.2.1 (13C100) Instrument,我最近添加了 os-signpost-point-schema .我注意到事件标有连字符/破折号而不是 ⓢ。查看我的
我不知道pinCode是什么,也不知道如何获取它?!我找到了以下代码,正如前面提到的,我们可以从 CallBack 中获取它,如何获取?如果还有其他方法请告诉我.. 代码 OAuthConsumer
我正在使用 Retrofit 2 在 Android 应用程序中发出 http 请求。我与之交谈的服务器需要 OAuth 1.0 授权。我使用此处的 okhttp-signpost 来处理 OAuth
我将在我的 Android 应用程序中访问 linkedin 个人资料。我使用了下面的代码,它在安卓设备上运行良好,但在模拟器上崩溃了。不知道哪里出了问题。我的代码如下。 配置.java public
你好,我正在尝试将 Twitter 与 OAuth 结合使用,但我收到此异常 授权失败(服务器回复 401)。如果消费者 key 不正确或签名不匹配,就会发生这种情况。 我正在使用这个示例 http:
我阅读了很多关于路标的内容,然后回到 Twitter4J,在不需要 OAuth 的情况下我用它创建了我的 Twitter 应用程序。 我现在很困惑是应该使用 signpost 还是 Twitter4J
我正在尝试使用 OAuth 身份验证来连接到各种服务。对于这大部分,这是有效的(使用 twitter/photobucket 进行测试),但使用 Evernote,我收到了 400 响应代码。 这里出
我正在通过 SocialLib 项目使用 Twitter 集成。但事情是不断得到 java.lang.NoClassDefFoundError: oauth.signpost.commonshttp.
所以我正在使用 Signpost Java 的 OAuth 库。我在使用 Apache Commons HTTP 库时遇到了一些问题。看看下面的代码: URL url = new URL("http:
使用路标 1.2: String authUrl = provider.retrieveRequestToken( consumer, callbackUrl ); Netflix API 响应:
我目前正在使用 OAuth-Signpost Java 库对从客户端发送到实现 OAuth 身份验证的服务器的请求进行签名。发出 GET 请求(使用 HttpURLConnection)时一切正常:请
尝试使用路标 oauth 库从 android 客户端调用。我生成了新的 APIv2 key ,但似乎没有什么不同。我得到的错误看起来像: {"error":{"text":"Signature wa
我是一名优秀的程序员,十分优秀!