我试图从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相关推荐

  1. 启动EBS的时候,弹出Java安全警告:“该应用程序要求具有Java的早期版本。是否要继续?”...

    问题 启动EBS的时候,弹出Java安全警告:"该应用程序要求具有Java的早期版本.是否要继续?" 如果是JRE英文的,弹出的Java警告为"The applicati ...

  2. 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 ...

  3. java c++ python哪个好_程序员学java好还是python语言好 c++又如何

    技术程序员学Java.C++.Python... 分析对比,到底学什么语言吃香,哪种语言最靠谱,如何学好这些语言呢? 几天前,我们在知识上看到这样一个问题:"java,C++,Python, ...

  4. navicat连接oracle无监听程序_一个Java程序员的成长历程(022天)

    第43次(Oracle数据库的使用) 学习主题:Oracle数据库的使用 学习目标: 1 掌握数据库相关概念 2 掌握oracle的安装,认识oracle的目录以及系统用户 3 掌握oracle常用命 ...

  5. java 连接eureka_在同一应用程序中的配置服务器和eureka服务器:尝试连接到localhost:8761...

    我有一个spring-boot应用程序,可用于在开发和测试环境中设置a spring cloud config server和a eureka server.奇怪的是localhost:8761,即使 ...

  6. Java性能调优之让程序“飞”起来-Java 代码优化

    代码优化的目标是: 1.减小代码的体积 2.提高代码运行的效率 代码优化细节 1.尽量指定类.方法的final修饰符 带有final修饰符的类是不可派生的.在Java核心API中,有许多应用final ...

  7. java 解锁关闭文件占用_程序员:Java文件锁定、解锁和其它NIO操作

    文件锁 java中i/o的文件锁定有两种:一种是独占锁,一种是共享锁. 共享锁既是共享读操作,但是只有一个可以进行写操作,共享锁防止其他正在运行的程序获取重复的独占锁,但是允许其他程序可以获取共享锁. ...

  8. java连接mysql实现增删改查_JDBC之Java连接mysql实现增删改查

    使用软件:mysql.eclipse 链接步骤: 1.注册驱动 2.创建一个连接对象 3.写sql语句 4.执行sql语句并返回一个结果或者结果集 5.关闭链接(一般就是connection.stat ...

  9. java完成一个学生信息调查程序_利用Java设计一个简单的学生信息管理程序

    利用Java设计一个简单的控制台学生信息管理程序 此程序可作为课设的参考,其中信息存储于文件中. 创建了学生类Student,用于存储学号等的信息.创建StudentFunction类,用于实现诸如学 ...

最新文章

  1. 思考:用开发移动app的观念来开发网站
  2. 结对编程1 - 四则运算生成器的改进(201421123040,60,61)
  3. 抓取百度页面html,百度会抓取页面代码中的注释内容吗
  4. oracle表的管理,Oracle表的管理
  5. structed streaming基础---跳过的坑
  6. c语言中的循环移位函数,C ++中循环移位(旋转)操作的最佳实践
  7. Spring源码之BeanDefinitionRegistryPostProcessor内部执行流程
  8. Docker 加速器
  9. systrace打印
  10. 信号与系统中的信号带宽理解
  11. 【PTA-python】第5章-1 输出星期名缩写 (70 分)
  12. 百度地图的离线地图实现
  13. js进行数学运算,加法,减法,乘法,除法
  14. 【已解决】华为P10禁止系统更新EMUI9
  15. vba中将数字数据转为数字格式_通过VBA将文本格式的时间转换为数字格式
  16. 如何用python爬取新浪财经
  17. eMMC Partition
  18. 10月新电影让KOOCAN吃了土,11月连土都没得吃了
  19. WACV 2021 论文大盘点-目标检测篇
  20. debian 完全卸载mysql_Debian完全卸载清理MySQL服务器

热门文章

  1. git强制覆盖master分支
  2. 【老九学堂】【C语言进阶】递归调用
  3. 打造在线简历生成器,让面试官眼前一亮……
  4. 通过GitHub静态网页托管,十分钟制作一份精美的在线网页简历
  5. Proteus8.9 VSM Studio SDCC编译器仿真STC15W4K32S4系列013_iic_03_AT24C08
  6. KerberosSDR新手入门测试
  7. ubuntu 18.04.2 server基本安装配置
  8. 家庭教育机构如何线上线下灵活结合?
  9. 趣拿口碑营销,打通线上线下才是真本事!
  10. UX设计师是做什么的,现在怎么样