java连接twitter登录,twitter应用程序只认证java android与twitter4j
我试图从oauth2(仅针对应用程序的身份验证)从twitter获取用户时间轴,但结果始终为空.我没有OAUTH的经验,我已经看了几个教程和例子,但迄今没有运气.我需要在没有用户需要登录的情况下检索特定的用户时间表(在本例中为Twitter).
我有一个应用程序使用twitter API 1,我试图使我的现有代码适应新的API 1.1与oauth2应用程序唯一auth.所以代码应该工作,除了它没有从Twitter收到任何东西.如果我得到一个结果,那么它应该再次工作.
与Twitter的连接在asyncop下的函数twitterconnect中进行.
这是我的代码:
public class TwitterActivity extends Activity {
private ConfigurationBuilder builder;
// twitter consumer key and secret
static String TWITTER_CONSUMER_KEY = "**************";
static String TWITTER_CONSUMER_SECRET = "*************";
// twitter acces token and accestokensecret
static String TWITTER_ACCES_TOKEN = "************";
static String TWITTER_ACCES_TOKEN_SECRET = "************";
ArrayList tweets = new ArrayList();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.twitter);
new AsyncOp().execute("test");
}
//Async class...
public class AsyncOp extends AsyncTask> {
protected List doInBackground(String... urls) {
//auth with twitter
List statuses = null;
try {
Twitter twitter=twitterConnect();
statuses = twitter.getUserTimeline("Twitter");
return statuses;
} catch (Exception ex) {
Log.d("Main.displayTimeline","" + ex.getMessage());
}
return statuses;
}
protected void onPostExecute(List statuses) {
try {
String TWITTER="EEE MMM dd HH:mm:ss ZZZZZ yyyy"; SimpleDateFormat sf=new
SimpleDateFormat(TWITTER,Locale.ENGLISH); sf.setLenient(true);
for(int i=0;i
twitter4j.Status stat = statuses.get(i);
User user=stat.getUser();
Date datePosted=stat.getCreatedAt();
String text=stat.getText();
String name=user.getName();
String profile_image_url=user.getProfileImageURL();
Tweet t =new Tweet(datePosted,text,name,profile_image_url,twitterHumanFriendlyDate(datePosted));
tweets.add(t);
// logcat info
Log.i("date",datePosted.toString());
Log.i("text",text);
Log.i("user",name);
Log.i("userprofilepic",profile_image_url);
Log.i("timeofpost",twitterHumanFriendlyDate(datePosted));
}
ListView listView = (ListView) findViewById(R.id.ListViewId);
listView.setAdapter(new UserItemAdapter(TwitterActivity.this,R.layout.listitem,tweets));
ProgressBar bar=(ProgressBar) findViewById(R.id.progressBar1);
bar.setVisibility(View.GONE);
} catch
(Exception e) { e.printStackTrace(); } }
}
public class UserItemAdapter extends ArrayAdapter {
private ArrayList tweets;
public UserItemAdapter(Context context,int textViewResourceId,ArrayList tweets) {
super(context,textViewResourceId,tweets);
this.tweets = tweets;
}
@Override
public View getView(int position,View convertView,ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.listitem,null);
}
Tweet tweet = tweets.get(position);
if (tweet != null) {
TextView username = (TextView) v.findViewById(R.id.username);
TextView message = (TextView) v.findViewById(R.id.message);
ImageView image = (ImageView) v.findViewById(R.id.avatar);
TextView date = (TextView) v.findViewById(R.id.date);
if (username != null) {
username.setText(tweet.username);
}
if (message != null) {
message.setText(tweet.message);
}
if (image != null) {
image.setImageBitmap(getBitmap(tweet.image_url));
}
if (date != null) {
date.setText(tweet.hfdate);
}
}
return v;
}
}
public Bitmap getBitmap(String bitmapUrl) {
try {
URL url = new URL(bitmapUrl);
return BitmapFactory.decodeStream(url.openConnection()
.getInputStream());
} catch (Exception ex) {
return null;
}
}
// build twitter
public Twitter twitterConnect() throws Exception
{
// setup
builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY).setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET);
OAuth2Token token = new TwitterFactory(builder.build()).getInstance().getOAuth2Token();
// exercise & verify
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setUseSSL(true);
cb.setApplicationOnlyAuthEnabled(true);
Twitter twitter = new TwitterFactory(cb.build()).getInstance();
twitter.setOAuthConsumer(TWITTER_CONSUMER_KEY,TWITTER_CONSUMER_SECRET);
twitter.setOAuth2Token(token);
return twitter;
}
public String twitterHumanFriendlyDate(Date dateCreated) {
// parse Twitter date
SimpleDateFormat dateFormat = new SimpleDateFormat(
"EEE MMM dd HH:mm:ss ZZZZZ yyyy",Locale.ENGLISH);
dateFormat.setLenient(false);
Date created = dateCreated;
// today
Date today = new Date();
// how much time since (ms)
Long duration = today.getTime() - created.getTime();
long second = 1000;
long minute = second * 60;
long hour = minute * 60;
long day = hour * 24;
if (duration < second * 7) {
return "right now";
}
if (duration < minute) {
int n = (int) Math.floor(duration / second);
return n + " seconds ago";
}
if (duration < minute * 2) {
return "about 1 minute ago";
}
if (duration < hour) {
int n = (int) Math.floor(duration / minute);
return n + " minutes ago";
}
if (duration < hour * 2) {
return "about 1 hour ago";
}
if (duration < day) {
int n = (int) Math.floor(duration / hour);
return n + " hours ago";
}
if (duration > day && duration < day * 2) {
return "yesterday";
}
if (duration < day * 365) {
int n = (int) Math.floor(duration / day);
return n + " days ago";
} else {
return "over a year ago";
}
}
}
我的问题是否是oauth方法?或者说getusertimeline?
如果任何人有一些示例代码或教程oauth2与twitter4j,将不胜感激
java连接twitter登录,twitter应用程序只认证java android与twitter4j相关推荐
- 启动EBS的时候,弹出Java安全警告:“该应用程序要求具有Java的早期版本。是否要继续?”...
问题 启动EBS的时候,弹出Java安全警告:"该应用程序要求具有Java的早期版本.是否要继续?" 如果是JRE英文的,弹出的Java警告为"The applicati ...
- ganymed ssh-2 for java,用于java连接问题的Ganymed SSH(Ganymed SSH for java connect issue)
用于java连接问题的Ganymed SSH(Ganymed SSH for java connect issue) 我们正在使用Ganymed-SSH库并在与另一台机器进行SSH时遇到此错误. [r ...
- java c++ python哪个好_程序员学java好还是python语言好 c++又如何
技术程序员学Java.C++.Python... 分析对比,到底学什么语言吃香,哪种语言最靠谱,如何学好这些语言呢? 几天前,我们在知识上看到这样一个问题:"java,C++,Python, ...
- navicat连接oracle无监听程序_一个Java程序员的成长历程(022天)
第43次(Oracle数据库的使用) 学习主题:Oracle数据库的使用 学习目标: 1 掌握数据库相关概念 2 掌握oracle的安装,认识oracle的目录以及系统用户 3 掌握oracle常用命 ...
- java 连接eureka_在同一应用程序中的配置服务器和eureka服务器:尝试连接到localhost:8761...
我有一个spring-boot应用程序,可用于在开发和测试环境中设置a spring cloud config server和a eureka server.奇怪的是localhost:8761,即使 ...
- Java性能调优之让程序“飞”起来-Java 代码优化
代码优化的目标是: 1.减小代码的体积 2.提高代码运行的效率 代码优化细节 1.尽量指定类.方法的final修饰符 带有final修饰符的类是不可派生的.在Java核心API中,有许多应用final ...
- java 解锁关闭文件占用_程序员:Java文件锁定、解锁和其它NIO操作
文件锁 java中i/o的文件锁定有两种:一种是独占锁,一种是共享锁. 共享锁既是共享读操作,但是只有一个可以进行写操作,共享锁防止其他正在运行的程序获取重复的独占锁,但是允许其他程序可以获取共享锁. ...
- java连接mysql实现增删改查_JDBC之Java连接mysql实现增删改查
使用软件:mysql.eclipse 链接步骤: 1.注册驱动 2.创建一个连接对象 3.写sql语句 4.执行sql语句并返回一个结果或者结果集 5.关闭链接(一般就是connection.stat ...
- java完成一个学生信息调查程序_利用Java设计一个简单的学生信息管理程序
利用Java设计一个简单的控制台学生信息管理程序 此程序可作为课设的参考,其中信息存储于文件中. 创建了学生类Student,用于存储学号等的信息.创建StudentFunction类,用于实现诸如学 ...
最新文章
- 思考:用开发移动app的观念来开发网站
- 结对编程1 - 四则运算生成器的改进(201421123040,60,61)
- 抓取百度页面html,百度会抓取页面代码中的注释内容吗
- oracle表的管理,Oracle表的管理
- structed streaming基础---跳过的坑
- c语言中的循环移位函数,C ++中循环移位(旋转)操作的最佳实践
- Spring源码之BeanDefinitionRegistryPostProcessor内部执行流程
- Docker 加速器
- systrace打印
- 信号与系统中的信号带宽理解
- 【PTA-python】第5章-1 输出星期名缩写 (70 分)
- 百度地图的离线地图实现
- js进行数学运算,加法,减法,乘法,除法
- 【已解决】华为P10禁止系统更新EMUI9
- vba中将数字数据转为数字格式_通过VBA将文本格式的时间转换为数字格式
- 如何用python爬取新浪财经
- eMMC Partition
- 10月新电影让KOOCAN吃了土,11月连土都没得吃了
- WACV 2021 论文大盘点-目标检测篇
- debian 完全卸载mysql_Debian完全卸载清理MySQL服务器