精华内容
下载资源
问答
  • UdonRoad2:Android Twitter应用程序
  • OurTwitterApp:简单的Android Twitter应用程序
  • android twitter like动画的按钮控件,就像Button是一个库,它允许你创建一个带有类似Twitter心脏的动画效果的按钮。
  • android Twitter第三方登陆

    千次阅读 2019-09-20 16:43:42
    官方DEMO:https://github.com/twitter-archive/twitter-kit-android/wiki/Log-In-with-Twitter 1、接入的第一步还是要在官方后台创建一个app,按照提示一步步添加,此过程就是为了得到key和secret,别忘了callback_url...

    创建app:https://apps.twitter.com
    官方DEMO:https://github.com/twitter-archive/twitter-kit-android/wiki/Log-In-with-Twitter

    1、接入的第一步还是要在官方后台创建一个app,按照提示一步步添加,此过程就是为了得到key和secret,别忘了callback_url也要添加

    2、开始集成:
    在app/build.gradle里添加
    dependencies {
    compile ‘com.twitter.sdk.android:twitter-core:3.1.1’
    compile ‘com.twitter.sdk.android:tweet-composer:3.1.1’
    }
    如果需要获取用户的信息的时候,这里实际还用到了compile ‘com.google.code.gson:gson:2.7’,

    初始化
    Twitter.initialize(this);放在你的 application的onCreate里就行

    官方给出的设置默认的配置信息,还可按如下设置
    TwitterConfig config = new TwitterConfig.Builder(this)
    .logger(new DefaultLogger(Log.DEBUG))
    .twitterAuthConfig(new TwitterAuthConfig(“CONSUMER_KEY”, “CONSUMER_SECRET”))
    .debug(true)
    .build();
    Twitter.initialize(config);
    注意:自己实测,此方法根本行不通,
    最终是通过第一种初始化,这里你会发现好像初始化和key/secret没啥关系,难道是后续的登陆接口用到,带着疑问又继续集成,

    登陆

    使用官方定义的登陆按钮
    <com.twitter.sdk.android.core.identity.TwitterLoginButton
    android:id="@+id/login_button"
    android:layout_width=“wrap_content”
    android:layout_height=“wrap_content” />
    loginButton = (TwitterLoginButton) findViewById(R.id.login_button);
    登陆监听
    loginButton.setCallback(new Callback() {
    @Override
    public void success(Result result) {
    // Do something with result, which provides a TwitterSession for making API calls
    }

    @Override
    public void failure(TwitterException exception) {
    // Do something on failure
    }
    });

    使用自己的按钮
    mTwitterAuthClient = new TwitterAuthClient();
    mTwitterAuthClient.authorize(activity, new Callback() {
    @Override
    public void success(Result result) {
    TwitterAuthToken authToken = result.data.getAuthToken();

                String token = authToken.token;
                String tokenSecret = authToken.secret;
                String userName = result.data.getUserName();
                long userId = result.data.getUserId();
                getTwitterUserInfo(userId);
                Log.i("main","authorize.token="+token);
                Log.i("main","authorize.tokenSecret="+tokenSecret);
                Log.i("main","authorize.userName="+userName);
                Log.i("main","authorize.userId="+userId+"");
            }
    
            @Override
            public void failure(TwitterException exception) {
                exception.printStackTrace();
                Log.i("main","authorize.failure="+exception.toString());
                mDologinResult.doLoginFail();
            }
        });
    

    结果返回
    @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);
    

    }

    获取用户信息
    private static void getTwitterUserInfo(final long userId){
    // AccessToken.getCurrentAccessToken()
    final TwitterSession activeSession = TwitterCore.getInstance().getSessionManager().getActiveSession();
    final String twitterSecret = activeSession.getAuthToken().secret;
    final String twitterToken = activeSession.getAuthToken().token;
    MyTwitterApiClient client = new MyTwitterApiClient(activeSession);
    client.getCustomService().show(userId).enqueue(new Callback() {
    @Override
    public void success(Result result) {
    User data = result.data;
    // data.name,data.profileImageUrl
    Log.i(“main”,“authorize.getTwitterUserInfo=”+data.name+",url="+data.profileImageUrl);
    }

            @Override
            public void failure(TwitterException e) {
                e.printStackTrace();
                Log.i("main","authorize.getTwitterUserInfo.failure="+e.getMessage());
                mDologinResult.doLoginFail();
            }
        });
    }
    

    static class MyTwitterApiClient extends TwitterApiClient {
    public MyTwitterApiClient(TwitterSession session) {
    super(session);
    }

        /**
         * Provide CustomService with defined endpoints
         */
        public CustomService getCustomService() {
            return getService(CustomService.class);
        }
    
        // example users/show service endpoint
        interface CustomService {
            @GET("/1.1/users/show.json")
            Call<User> show(@Query("user_id") long id);
        }
    }
    

    以上登陆的接口官方给的都挺详细,看着好像一切很顺利,好了开始测试,发现一直登陆失败,nnd,到底哪里出了问题,困扰了好久想想还是因为key和secret一直没配置好的问题,反反复复的看官方的文档和api,结果还是一直返回授权失败,和官方给的demo相比较代码的接入上也没有任何问题,最后还是仔细看了他们的demo才发现了问题,原来他的demo里多了一个文件twitter.properties里面就有key和secret的配置信息啥的,这…太nm坑了,官方文档从头到尾都没提到过这么文件,好吧,加上试试看吧,日了,成功了,

    最后贴上改文件的内容
    twitterConsumerKey=自己的key
    twitterConsumerSecret=自己的secret

    展开全文
  • 最近接触的项目要实现Twitter,Facebook,Email的分享功能。当然Android可以简单的用Intent调用第...Twiter这里我使用了twitter4j-core-android-2.2.6.jar这个是给android用的twitter4j的精简包,体积小。 授权(Oaut

    最近接触的项目要实现Twitter,Facebook,Email的分享功能。当然Android可以简单的用Intent调用第三方App实现这些功能。但是如果需求变态需要你自己写一个分享功能呢?

    先介绍一下Twitter的分享:

    Twiter这里我使用了twitter4j-core-android-2.2.6.jar这个是给android用的twitter4j的精简包,体积小。

    授权(Oauth)流程如下:

    1) 注册申请Twitter的开发者,创建App,获得开发者的Key和Secret,即consumer_key & consumer_secret

    2) 用Http通过Twitter提供的Api url + 参数consumer_key & consumer_secret到Twitter的服务器获取request_token

    3) 用Http通过Twitter提供的Api url + 参数request_token到Twitter服务器请求授权

    4) 授权确认后页面跳转到由你之前注册时填写的callback_url为地址前缀的的一个新网址(页面),并获取到oauth_verifer

    5) 最后,再发送request_token & oauth_verifer到Twitter服务器换取access_token & access_token_secret, 有了这两个值就可以通过它们进行各种Twitter操作。


    以上是授权的一个通用过程,但是在实现中需要考虑一些问题,因此有以下流程:

    1\ 从手机的文件存储中读取access_token & access_token_secret,,如果没有继续2\,有就直接设置它们到twitter对象中,然后到5\

    2\ 进行授权,前提是要已经设置consumer_key & consumer_secret到了twitter对象中,向服务器获取request_token(代码实现中是要求传递call_back_url作为参数)

    3\ 获取到request_token后将request_token作为参数传递并开启一个有WebView的Activity,然后自己用浏览器处理获取oauth_verifer,并将其作为参数传回给之前的那个Activity

    这里说一下用一个带WebView 的Activity处理的好处,一个是在有多个第三方浏览器的时候直接用Intent会没办法关闭第三方浏览器,不过其实最关键的是我在使用系统自带的浏览器的获取oauth_verifierr时,虽然XML有写回调数据的处理(<data android:scheme="http" android:host="app.com"),但是没有效果,于是我就在webview 的 onPageFinished()回调方法中自己获取它callback_url后面带的oauth_verifer参数值

    4\ 在之前的Activity里用接收到的oauth_verifer继续处理,向服务器获取access_token & access_token_secret,并且设置到twitter对象中,并且把它存入文件

    5\ 用twitter对象进行一些twitter操作

    注意:在5\ 中操作时会遇到如果用户撤销了授权的一些情况,这个时候就会抛出异常,此时就需要从2\开始再一次进行授权。

    关键的代码:

    在onCreate()里初始化以及设置组件:

    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_twitter);
    		
    		mPrefs = App.getInstance().getAppPrefs(); //获得操作文件系统的对象
    		
    		InitializeTwitter(); //初始化Twitter对象
    		
    		Intent intent = getIntent();
    		if (intent != null) {
    			preview_url = intent.getStringExtra("preview_url"); //Intent传过来的一个字符串,把它作为推文
    		}
    		
    		String accessToken = mPrefs.getTwitterAccessToken();
    		String accessTokenSecret = mPrefs.getTwitterAccessTokenSecret();
    		if (accessToken == null || accessTokenSecret == null) { //从文件系统里读取的access_token 和 access_token_secret的判断
    			reOauth(); //验证以及出问题的重复验证都会用这个函数
    		} else {
    			twitter.setOAuthAccessToken(new AccessToken(accessToken, accessTokenSecret));
    		}
    		
    		close = (Button)findViewById(R.id.btn_close);
    		send = (Button)findViewById(R.id.btn_send);
    		content = (EditText)findViewById(R.id.edit_content); //在这个Activity上用于显示推文内容
    		
    		close.setOnClickListener(closeListener); //关闭,调用finish()
    		send.setOnClickListener(sendListner); //发布推文
    	}


    初始化Twitter对象的代码:

    	private void InitializeTwitter() {
    		ConfigurationBuilder builder = new ConfigurationBuilder();
    		builder.setOAuthConsumerKey(AppConstants.TWITTER_CONSUMER_KEY); //consumer_key
    		builder.setOAuthConsumerSecret(AppConstants.TWITTER_CONSUMER_SECRET); //consumer_secret
    		Configuration conf = builder.build();
    		twitter = new TwitterFactory(conf).getInstance();		
    		twitter.setOAuthAccessToken(null);
    	}


    reOauth 验证函数

    	private void reOauth() {
    		try {
    			twitter.setOAuthAccessToken(null);
    			requestToken = twitter.getOAuthRequestToken(AppConstants.TWITTER_CALLBACK_URL); //获取requestToken
    		} catch (TwitterException e) {
    			Log.d("TEST", e.getMessage());
    		}
    		if (requestToken != null) {
    			Intent i = new Intent(this, WebsiteActivity.class);
    			i.putExtra(AppConstants.EXTRA_URL, requestToken.getAuthenticationURL());
    			startActivityForResult(i, TITTER_OAUTH); //开启一个带webview的Activity处理,名字为WebsiteActivity
    
    		}
    	}


    在WebsiteActivity里的处理关键动作:

    	private class MyWebViewClient extends WebViewClient { //要求是可以点击其他超练级继续浏览网页的,因此继承WebViewClient实现
    
    		@Override
    		public boolean shouldOverrideUrlLoading(WebView view, String url) {
    			view.loadUrl(url);
    			return true;
    		}
    
    		@Override
    		public void onPageFinished(WebView view, String url) { //在网页加载结束后,对callback_url带回的参数进行获取。并关闭这个activity
    			super.onPageFinished(view, url);
    			progressbar.setVisibility(View.GONE);
    			
    			if (url != null && url.startsWith(AppConstants.TWITTER_CALLBACK_URL)) {
    				String oauthVerifer = Uri.parse(url).
    					getQueryParameter(AppConstants.TWITTER_OAUTH_VERIFIER);
    				
    				Intent i = new Intent();
    				i.putExtra(AppConstants.TWITTER_OAUTH_VERIFIER, oauthVerifer);
    				setResult(RESULT_OK, i); //把获取的oauth_verifer
    				finish();
    			}
    		}
    
    		@Override
    		public void onPageStarted(WebView view, String url, Bitmap favicon) {
    			super.onPageStarted(view, url, favicon);
    			progressbar.setVisibility(View.VISIBLE);
    		}
    	}

    对返回的oauth_verifer进行处理,并与request_token一起去获取access_token & access_token_secret:

    	@Override
    	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    		super.onActivityResult(requestCode, resultCode, data);
    		Log.d("TEST", "Twitter onActivityResult()");
    		if (requestCode == TITTER_OAUTH) {
    			if (resultCode == Activity.RESULT_OK) {
    				oauthVerifier = data.getStringExtra(AppConstants.TWITTER_OAUTH_VERIFIER);				
    				try {
    					AccessToken at = twitter.getOAuthAccessToken(requestToken, oauthVerifier);
    					String accessToken = at.getToken();
    					String accessTokenSecret = at.getTokenSecret();
    					twitter.setOAuthAccessToken(at); //这里要设置access_token
    					mPrefs.setTwitterAccessToken(accessToken); //记得存入文件系统
    					mPrefs.setTwitterAccessTokenSecret(accessTokenSecret);
    				} catch (TwitterException e) {
    					Log.d("TEST", e.getMessage());
    				}
    			}
    		}
    	}

    最后就可以用twitter发布推文了,Send按钮事件:
    	private View.OnClickListener sendListner = new View.OnClickListener() {
    		
    		@Override
    		public void onClick(View v) {
    			try {
    				twitter.updateStatus(content.getText().toString() + preview_url);
    			} catch (TwitterException e) {
    				reOauth(); //在用户撤销授权或者删除app的时候,会抛出异常,这里就可以再次重新授权
    				Log.d("TEST", e.getMessage());
    			}
    		}
    	};




    展开全文
  • String authorizationHeaderString = "OAuth oauth_consumer_key=\"" + TWITTER_KEY + "\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"" + oauthTimeStamp + "\",oauth_nonce=\"" + oauthNonce + "\...
  • Android Twitter 分享---官方Fabric方式

    千次阅读 2016-06-01 15:25:13
    在网上搜了一些Twiter分享的例子,好多都是第三方的SDK,不稳定,于是查看了一下Twitter官方的说明,Twitter把SDK与Fabric发布到了AS上面,于是我就下载了下来,简单写了一个Demo,验证没有问题,可以实现分享,但是...

           在网上搜了一些Twiter分享的例子,好多都是第三方的SDK,不稳定,于是查看了一下Twitter官方的说明,Twitter把SDK与Fabric发布到了AS上面,于是我就下载了下来,简单写了一个Demo,验证没有问题,可以实现分享,但是没有Facebook官方的SDK好用,大家可以尝试使用一下吧。


    1、前几个步骤我就不赘述了,就是去Twitter官网获得到3个key,APIKEY,TWITTER_KEY和TWITTER_SECRET




    2、替换Mainactivity中的YOUR_TWITTER_KEY和YOUR_TWITTER_SECRET
          替换掉AndroidManifest中的YOUR_API_KEY

    3、AndroidManifest中需要配置如下:

    <span style="font-size:18px;">         <meta-data
                android:name="io.fabric.ApiKey"
                android:value="YOUR_API_KEY"     /></span>

    4、关键代码

    <span style="font-size:14px;">        </span><span style="font-size:18px;">TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
            Fabric.with(MainActivity.this, new TwitterCore(authConfig), new TweetComposer());
            
            findViewById(R.id.btn_share).setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View arg0) {
    				
    				String shareContent = "message";
                  
                    URL netUrl = null;
                    try
                    {
                        netUrl = new URL("www.baidu.com");
                    }
                    catch (MalformedURLException e)
                    {
                        
                    }
                    TweetComposer.Builder builder = new TweetComposer.Builder(MainActivity.this);
                    
    //                builder.url(netUrl);
                    builder.text(shareContent);
    //                builder.image(Uri.parse(""));
                    builder.show();
    				
    			}
    		});</span>

    TwitterDemo 源码下载


    展开全文
  • android twitter 登陆授权及分享

    千次阅读 2014-05-16 12:35:17
    .apiSecret(Constant.CONSUMER_TWITTER_SECRET).callback(Constant.OAUTH_CALLBACK_TWITTER_HOST).build(); mRequestToken = mService.getRequestToken(); authUrl = mService.getAuthorizationUrl...

    我的上篇文档已经写了关于linkedin的授权及分享,在此有些地方就不去做描述,只把不同的地方说一下

    1、去dev.twitter.com注册应用获取appkey及secert,

    2、让你的应用有读写权限,如果出现这个问题You must add your mobile phone to your Twitter profile before granting your application write capabilities.时,请到你的twitter个人设置里移动互联,激活手机号,+086186.。。。。   无论是否成功,返回授权页再次修改即可成功修改权限。

    3、代码不同的地方

    	mService =  new ServiceBuilder()
    				.provider(TwitterApi.class).apiKey(Constant.CONSUMER_TWITTER_KEY)
    				.apiSecret(Constant.CONSUMER_TWITTER_SECRET).callback(Constant.OAUTH_CALLBACK_TWITTER_HOST).build();
    				mRequestToken = mService.getRequestToken();
    				authUrl = mService.getAuthorizationUrl(mRequestToken);

    String tweet = showTweets.getEditableText().toString();
    				try {
    					tweet = URLEncoder.encode(tweet,"UTF-8");
    				} catch (UnsupportedEncodingException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			    String urlTweet="https://api.twitter.com/1.1/statuses/update.json?status="+tweet;
    			    OAuthRequest request2 = new OAuthRequest(Verb.POST, urlTweet);
    				mService =  new ServiceBuilder()
    				.provider(TwitterApi.class).apiKey(Constant.CONSUMER_TWITTER_KEY)
    				.apiSecret(Constant.CONSUMER_TWITTER_SECRET)
    				.callback(Constant.OAUTH_CALLBACK_TWITTER_HOST).build();
    				Token token = new Token(userToken, userScreet);
    				mService.signRequest(token, request2);
    				Response response = request2.send();
    				Message msg = new Message();
    				String reStr = response.getBody();
    				System.out.println(response.getBody());
    				System.out.println(response.getHeaders().toString());


    展开全文
  • (2)组装授权的页面url,并在webview中打开这个url,通过js注入回调的方式得到用户点击allow后的页面的内容,得到twitter授权的访问码. (3)用这个访问码发信息哈 (4)搞定 (5) 这个方法不太稳定,容易...
  • Twitter Kit for Android Twitter Kit is a multi-module gradle project containing several Twitter SDKs including TweetComposer, TwitterCore, and TweetUi. Twitter Kit is designed to make interacting with...
  • AndroidTwitter工具箱
  • android集成twitter

    热门讨论 2012-10-18 16:13:24
    android集成twitter,一键授权,一键分享,一键切换帐号,可分享文字和图片
  • android集成twitter登录

    2018-01-08 19:40:00
    Twitter曾经举行了自己四年以来的第一场开发者大会。而这场名为“Flight”的大会,也是以后它的年度惯例。 这次大会的主题也完全围绕开发者进行。大会的焦点是一个名叫Fabric的新SDK,里面包括三个开发者工具包:...
  • 摘要:Java源码,Android源码,登录界面 基于Android环境的miniTwitter登录界面,是Twitter网站的一个迷你登录窗口,比较简单的Android网页应用,登录框的美化,新手学一下,如何开始你的第一个Android小程序,本源码...
  • Android使用Twitter4j集成Twitter

    千次阅读 2014-03-21 17:57:30
    译者注:原文中使用Twitter4j3.0.3,由于官方api的不断更新,该版本使用起来会有问题,就像原文评论当中提到的nullpointerexception。...原文链接:http://hintdesk.com/how-to-tweet-in-twitter-within-android-cli
  • miniTwitterLoginDemo_Android实现Twitter网站迷你登录界面
  • ssmtc:适用于AndroidTwitter客户端
  • Android Twitter第三方登录,出现错误: E/Twitter: Authorization completed with an error com.twitter.sdk.android.core.TwitterAuthException: Failed to get request token 解决办法: Callback URL设置为...
  • SimpleTweet是一个Android应用程序,允许用户查看他的Twitter时间轴并发布新的tweet。 该应用程序利用 。 花费时间:总共花费11个小时 用户故事 完成以下必需的功能: 用户可以撰写和发布新的推文 用户可以单击...
  • Android实现Twitter登录分享

    千次阅读 2018-12-29 11:35:11
    Twitter 一、注册获取参数 1、进入Twitter开发者网站注册账号https://developer.twitter.com/ 2、新建一个项目,就按照提示填写就行(提示:尽量填的“委婉”点); 3、创建应用 括号代表必填 tips:不勾选...
  • android实现推特Twitter分享

    千次阅读 2016-11-23 16:30:04
    android实现推特Twitter分享
  • <div><p>Hi there, i am trying to add the twitter sdk into my library in android. But, it is always said that failed to resolve the library. But if i tried to add the twitter sdk into my application ...
  • 乌 云倒闭之后很少国内少有相关的漏洞分享。...twitter上开到一个讨论android组件 付费的key硬编码导致被盗用 https://blog.dixitaditya.com/bypassing-google-maps-api-key-restrictions/ 各个年份的b
  • Twittnuker是Android 4.0以上的免费Twitter客户端,支持Android 5(Lollipop),支持Android 6(Marshmallow),以及基于Twidere项目的Material Design
  • 您应用的名称是一个允许用户查看其Twitter时间轴的android应用。 该应用程序利用 。 花费的时间:总共花费X个小时 用户故事 完成以下必需的功能: 用户可以使用OAuth登录名登录Twitter 用户可以从其主时间轴查看...
  • 不多见的Twitter分享android推特分享 教程详见本人博客
  • Android集成Twitter和facebook登录分享

    千次阅读 2015-10-17 20:32:39
    https://docs.fabric.io/android/twitter/configure-twitter-app.html#callback-url https://docs.fabric.io/android/index.html https://apps.twitter.com https://fabric.io https://twittercommuni
  • Twitter是一个Android应用程序,允许用户查看其Twitter时间轴并发布新的推文。 该应用程序使用 。 这个程序是为学习目的而制作的。 花费的时间:总共花费35个小时(持续两周) 使用的元素: 来自Material.io/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,765
精华内容 706
关键字:

androidtwitter