Java Android版Twitter的oAuth中出现错误
我正在使用一个应用程序来授权使用Twitter4j库的Twitter用户。我想加入一项功能,我的移动应用程序将打开。它有一个登录按钮,点击该按钮就会出现Twitter登录对话框,并允许您输入登录信息。登录完成后,将打开另一个屏幕Java Android版Twitter的oAuth中出现错误,java,android,twitter,oauth,twitter4j,Java,Android,Twitter,Oauth,Twitter4j,我正在使用一个应用程序来授权使用Twitter4j库的Twitter用户。我想加入一项功能,我的移动应用程序将打开。它有一个登录按钮,点击该按钮就会出现Twitter登录对话框,并允许您输入登录信息。登录完成后,将打开另一个屏幕 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.List; import twitter4j.S
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;
import twitter4j.auth.RequestToken;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.Toast;
public class AndTweetVJActivity extends Activity {
/** Called when the activity is first created. */
Twitter twitter;
RequestToken requestToken;
public final static String consumerKey = "myKey"; // "your key here";
public final static String consumerSecret = "myKey"; // "your secret key here";
private final String CALLBACKURL = "T4JOAuth://main"; //Callback URL that tells the WebView to load this activity when it finishes with twitter.com. (see manifest)
//Calls the OAuth login method as soon as its started
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
OAuthLogin();
}
/* Creates object of Twitter and sets consumerKey and consumerSecret
* - Prepares the URL accordingly and opens the WebView for the user to provide sign-in details
* - When user finishes signing-in, WebView opens your activity back */
void OAuthLogin() {
try {
twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(consumerKey, consumerSecret);
requestToken = twitter.getOAuthRequestToken(CALLBACKURL);
String authUrl = requestToken.getAuthenticationURL();
this.startActivity(new Intent(Intent.ACTION_VIEW, Uri
.parse(authUrl)));
} catch (TwitterException ex) {
Toast.makeText(this, ex.getMessage(), Toast.LENGTH_LONG).show();
Log.e("in Main.OAuthLogin", ex.getMessage());
}
}
/*
* - Called when WebView calls your activity back.(This happens when the user has finished signing in)
* - Extracts the verifier from the URI received
* - Extracts the token and secret from the URL
*/
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri uri = intent.getData();
try {
String verifier = uri.getQueryParameter("oauth_verifier");
AccessToken accessToken = twitter.getOAuthAccessToken(requestToken,verifier);
String token = accessToken.getToken(), secret = accessToken.getTokenSecret();
//displayTimeLine(token, secret); //after everything, display the first tweet
} catch (TwitterException ex) {
Log.e("Main.onNewIntent", "" + ex.getMessage());
}
}
}
但是,在运行此应用程序时,在logcat中出现错误:
11-18 10:36:27.727: E/in Main.OAuthLogin(282): 401:Authentication credentials (https://dev.twitter.com/docs/auth) were missing or incorrect. Ensure that you have set valid conumer key/secret, access token/secret, and the system clock in in sync.
11-18 10:36:27.727: E/in Main.OAuthLogin(282): <?xml version="1.0" encoding="UTF-8"?>
11-18 10:36:27.727: E/in Main.OAuthLogin(282): <hash>
11-18 10:36:27.727: E/in Main.OAuthLogin(282): <error>Desktop applications only support the oauth_callback value 'oob'</error>
11-18 10:36:27.727: E/in Main.OAuthLogin(282): <request>/oauth/request_token</request>
11-18 10:36:27.727: E/in Main.OAuthLogin(282): </hash>
11-18 10:36:27.727:E/in Main.OAuthLogin(282):401:身份验证凭据(https://dev.twitter.com/docs/auth)丢失或不正确。确保已同步设置有效的使用者密钥/密码、访问令牌/密码和系统时钟。
11-18 10:36:27.727:E/in Main.OAuthLogin(282):
11-18 10:36:27.727:E/in Main.OAuthLogin(282):
11-18 10:36:27.727:E/in Main.OAuthLogin(282):桌面应用程序仅支持oauth_回调值“oob”
11-18 10:36:27.727:E/in Main.OAuthLogin(282):/oauth/request\u token
11-18 10:36:27.727:E/in Main.OAuthLogin(282):
我相信我没有设置回调URL,但我也这样做了
在我的应用程序中。确保你没有在twitter应用程序注册中在桌面应用程序类别中注册你的应用程序 确保您尚未在twitter应用程序注册中在桌面应用程序类别中注册您的应用程序 我的坏。。。我的网络服务器坏了,直到5分钟前我才注意到。谢谢你的建议。我已经做了这些事情 我的坏。。。我的网络服务器坏了,直到5分钟前我才注意到。谢谢你的建议。我已经做了这些事情 现在没有这样的选择。。我所能做的就是用回调url注册我的应用程序,以确保它是一个web应用程序。如果callback不存在,那么它是一个使用oob而不是OAuth的桌面应用程序,现在没有这样的选项。。我所能做的就是用回调url注册我的应用程序,以确保它是一个web应用程序。如果callback不存在,则它是一个使用oob而不是oAuthCheck的桌面应用程序。我遇到了相同的“oob”错误,此链接对修复此错误很有用:查看一些关于身份验证的代码示例。我遇到了相同的“oob”错误,此链接对修复此错误很有用: