Android 使用Twitter登录失败
当我在android应用程序中使用twitter登录时,我遇到了一些问题。错误日志如下:Android 使用Twitter登录失败,android,twitter,Android,Twitter,当我在android应用程序中使用twitter登录时,我遇到了一些问题。错误日志如下: 09-05 15:38:48.492 22119-22119/sg.com.conversant.swiftlive E/Twitter: Failed to get request token com.twitter.sdk.android.core.TwitterApiException: HTTP request failed, Status: 401 at com.twitter.sdk.an
09-05 15:38:48.492 22119-22119/sg.com.conversant.swiftlive E/Twitter: Failed to get request token com.twitter.sdk.android.core.TwitterApiException: HTTP request failed, Status: 401
at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5118)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610)
at dalvik.system.NativeStart.main(Native Method)
09-05 15:38:48.552 22119-22119/sg.com.conversant.swiftlive E/Twitter: Authorization completed with an error com.twitter.sdk.android.core.TwitterAuthException: Failed to get request token
at com.twitter.sdk.android.core.identity.OAuthController$1.failure(OAuthController.java:95)
at com.twitter.sdk.android.core.internal.oauth.OAuth1aService$1.failure(OAuth1aService.java:194)
at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5118)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610)
at dalvik.system.NativeStart.main(Native Method)
09-05 15:38:48.552 22119-22119/sg.com.conversant.swiftlive D/TwitterKit: Login with Twitter failure com.twitter.sdk.android.core.TwitterAuthException: Failed to get request token
at com.twitter.sdk.android.core.identity.OAuthController$1.failure(OAuthController.java:95)
at com.twitter.sdk.android.core.internal.oauth.OAuth1aService$1.failure(OAuth1aService.java:194)
at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5118)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610)
at dalvik.system.NativeStart.main(Native Method)
private static final String TWITTER_KEY = "*******************";
private static final String TWITTER_SECRET = "*************";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with(this, new Twitter(authConfig));
ButterKnife.inject(this);
setCallback(new com.twitter.sdk.android.core.Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
AccountService ac = Twitter.getApiClient(result.data).getAccountService();
Call<User> call = ac.verifyCredentials(true,true);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
User user = response.body();
user_id = Long.toString(user.id);
nickName = user.name;
avatar = user.profileImageUrl ;
if (user_id != null) {
System.out.println(user_id+":"+nickName+":"+avatar);
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
}
});
}
@Override
public void failure(TwitterException exception) {
Log.d("TwitterKit", "Login with Twitter failure", exception);
}
});
}
View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
case R.id.login_twitter_btn:
getTwitterAuthClient().authorize(activity, callback);
break;
}
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == getTwitterAuthClient().getRequestCode()) {
getTwitterAuthClient().onActivityResult(requestCode,resultCode, data);
}
}
public void setCallback(com.twitter.sdk.android.core.Callback<TwitterSession> callback) {
if (callback == null) {
throw new IllegalArgumentException("Callback cannot be null");
}
this.callback = callback;
}
TwitterAuthClient getTwitterAuthClient() {
if (authClient == null) {
synchronized (LoginActivity.class) {
if (authClient == null) {
authClient = new TwitterAuthClient();
}
}
}
return authClient;
}
顺便说一下,我已经在我的twitter设置页面中设置了回调Url 你能帮我解决这个问题吗?非常感谢 我使用自定义按钮来实现我的功能。一些代码如下:
09-05 15:38:48.492 22119-22119/sg.com.conversant.swiftlive E/Twitter: Failed to get request token com.twitter.sdk.android.core.TwitterApiException: HTTP request failed, Status: 401
at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5118)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610)
at dalvik.system.NativeStart.main(Native Method)
09-05 15:38:48.552 22119-22119/sg.com.conversant.swiftlive E/Twitter: Authorization completed with an error com.twitter.sdk.android.core.TwitterAuthException: Failed to get request token
at com.twitter.sdk.android.core.identity.OAuthController$1.failure(OAuthController.java:95)
at com.twitter.sdk.android.core.internal.oauth.OAuth1aService$1.failure(OAuth1aService.java:194)
at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5118)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610)
at dalvik.system.NativeStart.main(Native Method)
09-05 15:38:48.552 22119-22119/sg.com.conversant.swiftlive D/TwitterKit: Login with Twitter failure com.twitter.sdk.android.core.TwitterAuthException: Failed to get request token
at com.twitter.sdk.android.core.identity.OAuthController$1.failure(OAuthController.java:95)
at com.twitter.sdk.android.core.internal.oauth.OAuth1aService$1.failure(OAuth1aService.java:194)
at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5118)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610)
at dalvik.system.NativeStart.main(Native Method)
private static final String TWITTER_KEY = "*******************";
private static final String TWITTER_SECRET = "*************";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with(this, new Twitter(authConfig));
ButterKnife.inject(this);
setCallback(new com.twitter.sdk.android.core.Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
AccountService ac = Twitter.getApiClient(result.data).getAccountService();
Call<User> call = ac.verifyCredentials(true,true);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
User user = response.body();
user_id = Long.toString(user.id);
nickName = user.name;
avatar = user.profileImageUrl ;
if (user_id != null) {
System.out.println(user_id+":"+nickName+":"+avatar);
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
}
});
}
@Override
public void failure(TwitterException exception) {
Log.d("TwitterKit", "Login with Twitter failure", exception);
}
});
}
View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
case R.id.login_twitter_btn:
getTwitterAuthClient().authorize(activity, callback);
break;
}
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == getTwitterAuthClient().getRequestCode()) {
getTwitterAuthClient().onActivityResult(requestCode,resultCode, data);
}
}
public void setCallback(com.twitter.sdk.android.core.Callback<TwitterSession> callback) {
if (callback == null) {
throw new IllegalArgumentException("Callback cannot be null");
}
this.callback = callback;
}
TwitterAuthClient getTwitterAuthClient() {
if (authClient == null) {
synchronized (LoginActivity.class) {
if (authClient == null) {
authClient = new TwitterAuthClient();
}
}
}
return authClient;
}
private static final String TWITTER_KEY=“**********************”;
私有静态最终字符串TWITTER_SECRET=“****************”;
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u登录);
TwitterAuthConfig authConfig=新的TwitterAuthConfig(TWITTER\u密钥,TWITTER\u秘密);
Fabric.with(this,newtwitter(authConfig));
注射(这个);
setCallback(新的com.twitter.sdk.android.core.Callback(){
@凌驾
公开作废成功(结果){
AccountService ac=Twitter.getApiClient(result.data).getAccountService();
Call Call=ac.verifyCredentials(true,true);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
User=response.body();
user\u id=Long.toString(user.id);
昵称=user.name;
avatar=user.profileImageUrl;
如果(用户id!=null){
System.out.println(用户id+“:”+昵称+“:”+化身);
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
}
@凌驾
公共无效失败(TwitterException异常){
Log.d(“TwitterKit”,“使用TwitterFailure登录”,异常);
}
});
}
View.OnClickListener clickListener=新建视图。OnClickListener(){
@凌驾
公共void onClick(视图v){
案例R.id.login\u twitter\u btn:
getTwitterAuthClient().authorize(活动,回调);
打破
}
}
};
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
if(requestCode==GetWitterAuthClient().getRequestCode()){
getTwitterAuthClient().onActivityResult(请求代码、结果代码、数据);
}
}
public void setCallback(com.twitter.sdk.android.core.Callback){
if(回调==null){
抛出新的IllegalArgumentException(“回调不能为null”);
}
this.callback=回调;
}
TwitterAuthClient getTwitterAuthClient(){
if(authClient==null){
已同步(LoginActivity.class){
if(authClient==null){
authClient=new TwitterAuthClient();
}
}
}
返回authClient;
}
您需要正确配置它。请分享一些代码,以便我能提供帮助
试着跟着这里的导游走
填写Twitter设置开发帐户中的“回调URL”字段。用fabric提供的消费者密钥(API密钥)替换Twitter密钥,用消费者密钥(API密钥)替换Twitter密钥 替换TwitterAuthConfig authConfig=new TwitterAuthConfig(TWITTER\u KEY,TWITTER\u SECRET)代码> 使用TwitterAuthConfig authConfig=new TwitterAuthConfig(“在此处插入使用者密钥(使用者密钥(API密钥))”,在此处插入使用者密钥(使用者密钥(API密钥))代码> 有关详细操作方法,请参阅。 我也有同样的问题并解决了。在我的例子中,我需要在twitter开发帐户中设置回调url Twitter开发帐户->设置->回调url(设置任何有效url,如 (www.google.com)
如果遇到同样的问题,唯一有效的方法就是在内部版本中更改此版本。Gradle:
implementation 'com.twitter.sdk.android:twitter-core:3.1.1'
使用了最新版本的twitter core,但无法使用。请添加您的代码我添加我的代码~请帮助我~谢谢您的回答,我使用自定义按钮实现了我的功能。一些代码如下:我已经在我的twitter设置页面中设置了回调Url。但它不起作用