2017-05-24 12 views
0

我想從我的應用程序登錄Twitter的用戶,爲了這個,我現在用的面料的ImageView的,但是他說,我必須實現以下按鈕,使用setCallBack如何添加setCallback使用面料

twitter_login_button.setCallback(new Callback<TwitterSession>() { 
     @Override 
     public void success(Result<TwitterSession> result) { 

      TwitterSession session = result.data; 
      String msg = "@" + session.getUserName() + " logged in! (#" + session.getUserId() + ")"; 
      twitter_login_button.setVisibility(View.INVISIBLE); 

     } 

     @Override 

     public void failure(TwitterException exception) { 

      Log.d("TwitterKit", "Login with Twitter failure", exception); 

     } 

    }); 

<com.twitter.sdk.android.core.identity.TwitterLoginButton 
    android:id="@+id/twitter_login_button" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

然而,我想從一個圖像做到這一點。我怎樣才能做到這一點

方法份額

public void shareTwitter(){ 
      try { 

       URL url=new URL("https://www.youtube.com"); 

       TweetComposer.Builder builder=new TweetComposer.Builder(getContext()) .text(user.getName()) .url(url); 

       builder.show(); 
      } 

      catch (MalformedURLException e) { 

       e.printStackTrace(); 
      } 
     } 
+1

參考https://stackoverflow.com/questions/37895231/how-do-i-authenticate-on-imageviews-click-instead-of- twitterbuttons-click – sasikumar

+0

對我而言不起作用 – pete

+0

'twitter_login_button'的類型爲'Android Button'? – cole

回答

5

你可以使用任何圖像或自定義按鈕做到這一點。對於您的活動 聲明

private TwitterAuthClient twitterAuthClient; 

找到您的佈局(在我的情況的一個的LinearLayout)

twitter_login = (LinearLayout) findViewById(R.id.layout_twitter_login); 
final TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET); 
     TwitterConfig config = new TwitterConfig.Builder(this) 
       .logger(new DefaultLogger(Log.DEBUG)) 
       .twitterAuthConfig(authConfig) 
       .debug(true) 
       .build(); 
     Twitter.initialize(config); 
     twitterAuthClient = new TwitterAuthClient(); 

twitter_login.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       twitterAuthClient.authorize(LoginActivity.this, new com.twitter.sdk.android.core.Callback<TwitterSession>() { 
        @Override 
        public void success(Result<TwitterSession> result) { 
         // The TwitterSession is also available through: 
         // Twitter.getInstance().core.getSessionManager().getActiveSession(); 
         TwitterSession session = result.data; 
         twitterAuthClient.requestEmail(session, new com.twitter.sdk.android.core.Callback<String>() { 
          @Override 
          public void success(Result<String> result) { 
           Log.e(TAG, "Twitterkit email id get success = " + result.data); 
          } 

          @Override 
          public void failure(TwitterException exception) { 
           Log.e(TAG, "Twitter kit twitter email get failed"); 
           exception.printStackTrace(); 
          } 
         }); 


        } 

        @Override 
        public void failure(TwitterException exception) { 
         Log.e(TAG, "Twitter kit twitter login failed"); 
         exception.printStackTrace(); 
        } 
       }); 
      } 
     }); 

然後粘貼添加此對您的onActivityResult()

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    twitterAuthClient.onActivityResult(requestCode, resultCode, data); 

} 

完蛋了。現在你的Twitter登錄應該工作

更新:以後你可以很容易地使用Twitter的SDK,而不是布

所以對於登錄和身份驗證設置Twitter的登錄添加到您的gradle這個

從TwitterKit3

compile 'com.twitter.sdk.android:twitter-core:3.0.0' 

而且我在原來的答覆替代

Fabric.with(this, new Twitter(authConfig)); 

TwitterConfig config = new TwitterConfig.Builder(this) 
       .logger(new DefaultLogger(Log.DEBUG)) 
       .twitterAuthConfig(authConfig) 
       .debug(true) 
       .build(); 
     Twitter.initialize(config); 

,其餘都是相同

+0

你救了我的日子正在爲我工​​作謝謝! – pete

+0

樂意幫忙@petereyn –

+0

什麼樣的例外? –