2017-02-24 6 views
1

私はcom.twitter.sdk.android.TwitterでJavaでauth Twitterをコーディングしようとしました。下のコードを参照してください:java TwitterAuthClient onActivityResult

import com.twitter.sdk.android.Twitter; 
import com.twitter.sdk.android.*; 
import com.twitter.sdk.android.core.*; 
import com.twitter.sdk.android.core.TwitterCore; 
import com.twitter.sdk.android.core.TwitterCore.*; 
import com.twitter.sdk.android.core.identity.TwitterAuthClient; 
import com.twitter.sdk.android.core.OAuthSigning; 
import com.twitter.sdk.android.core.Callback; 
import com.twitter.sdk.android.core.Result; 
import com.twitter.sdk.android.core.TwitterException; 
import com.twitter.sdk.android.core.TwitterSession; 
import java.lang.Object.*; 
import io.fabric.sdk.android.Fabric; 
import android.content.Intent; 
import android.app.Fragment; 
public static void authentificationTwitter() { 
    classAuthentificationTwitter auth=new classAuthentificationTwitter(); 
    auth.execAuthentificationTwitter(); 
} 

public static class classAuthentificationTwitter extends Activity{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    public void execAuthentificationTwitter() { 
     Log.v("myLog", "authentificationTwitter");  
     TwitterAuthConfig authConfig = new TwitterAuthConfig("xxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); 
     TwitterCore twitter = new TwitterCore(authConfig);  
     Fabric.with(getCurrentActivity(), twitter); 
     client = new TwitterAuthClient(); 
     client.authorize(getCurrentActivity(), new Callback<TwitterSession>() { 
      @Override 
      public void success(Result<TwitterSession> twitterSessionResult) { 
       Log.v("myLog", "authentificationTwitter Success");   
      } 
      @Override 
      public void failure(TwitterException e) { 
       Log.v("myLog", "authentificationTwitter echec"); 
      } 
     }); 
     //startActivityForResult(getIntent(),99); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Log.v("myLog", "authentificationTwitter onActivityResult : " + requestCode + "/" + resultCode + "/" + data); 
     super.onActivityResult(requestCode, resultCode, data); 

     if (client != null) { 
      client.onActivityResult(requestCode, resultCode, data); 
     } 
    } 

} 


static TwitterAuthClient client; 

問題は、コールバックは決して呼び出されません。私はそれを読んで、結果をディスパッチするためにメインアクティビティのonActivityResultメソッドを変更するのは問題ありませんが、アクセスできません。私は自分の正しいコードを変更することしかできません。

誰かが私を助けることができるかもしれません。 ご協力いただきありがとうございます。

P.S:私はJavaでニュースだ...

+0

'getCurrentActivity()'とは何ですか? 'onActivityResult()'は 'client.authorize(activity、callback)'で渡す 'Activity'に対して呼び出されます。なぜあなたは 'client.authorize(this、callback) 'を呼び出さないのですか? –

+0

返信いただきありがとうございます。私はIDEでWindev mobilという名前を使用していますが、getCurrentActivityは "this"と同等です。 – Slayes

+0

あなたの 'execAuthentificationTwitter()'の呼び出し方は、Androidにとってはあまり正統ではないようです。別のクラスから呼び出していると仮定している '静的'メソッドから呼び出すのですか?あなたがしようとしているのは、アクティビティが始まるとすぐに認証を開始することです。 'onCreate()'メソッドで 'execAuthentificationTwitter()'を呼び出す必要があります –

答えて

0

あなたがあなたの活動の内側にonActivityResult呼び出す必要があります。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    // Pass the activity result to the login button. 
    loginButton.onActivityResult(requestCode, resultCode, data); 
} 

フラグメント内のコールバックの場合。アクティビティとフラグメントの両方でonActivityResultを呼び出す必要があります。 ご確認くださいhttps://dev.twitter.com/twitterkit/android/log-in-with-twitter

関連する問題