我试图从我的应用程序登录Twitter用户,为此我使用Fabric,但是说我必须实现以下按钮才能使用setCallBack
twitter_login_button.setCallback(new Callback() { @Override public void success(Result 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); } });
但是,我想从图像中做到这一点.我怎样才能做到这一点
分享方法
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(); } }
Sidharth Ani.. 5
您可以使用任何图像或自定义按钮执行此操作.对于你的活动声明
private TwitterAuthClient twitterAuthClient;
找到你的布局(在我的例子中是一个线性布局)
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() { @Override public void success(Result 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 () { @Override public void success(Result 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登录应该有效
更新:
从TwitterKit3开始,您可以使用twitter sdk而不是fabric轻松设置Twitter登录
因此,对于登录和身份验证,请将此添加到您的gradle
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);
其余的都是一样的
您可以使用任何图像或自定义按钮执行此操作.对于你的活动声明
private TwitterAuthClient twitterAuthClient;
找到你的布局(在我的例子中是一个线性布局)
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() { @Override public void success(Result 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 () { @Override public void success(Result 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登录应该有效
更新:
从TwitterKit3开始,您可以使用twitter sdk而不是fabric轻松设置Twitter登录
因此,对于登录和身份验证,请将此添加到您的gradle
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);
其余的都是一样的