gpt4 book ai didi

android - 如何使用 twitter4j 库获取屏幕名称的推文?

转载 作者:行者123 更新时间:2023-11-30 03:36:42 25 4
gpt4 key购买 nike

我看过很多使用这个库的教程,但我对它没有一个清晰的概念。

首先,我如何验证 Twitter 应用程序??,

有什么方法可以对访问 token 进行硬编码,以便用户无需执行任何操作,他可以​​通过输入屏幕名称直接搜索特定用户的推文?

如何在提到屏幕名称后获取推文?

我尝试使用 twitter4j lib 阅读文档,但它对我有帮助....

我需要帮助我从两天前就陷入了这个问题,请帮助...

最佳答案

有多种验证方式:

首先,您需要创建一个应用程序 here .然后您将收到您的消费者 key 和 secret :

Consumer key

然后您可以使用此代码在启动时请求授权。

public class MainActivity extends Activity {

// TwitterProperties
private CommonsHttpOAuthConsumer httpOauthConsumer;
private OAuthProvider httpOauthprovider;

public final static String consumerKey = "YOUR CONSUMER KEY";
public final static String consumerSecret = "YOUR CONSUMER SECRET";

private final String CALLBACKURL = "SCHEME://HOST";

private Twitter twitter;
AccessToken a;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

StrictMode.enableDefaults();
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);

doAuth();
}

private void doAuth() {
try {
httpOauthConsumer = new CommonsHttpOAuthConsumer(consumerKey,
consumerSecret);
httpOauthprovider = new DefaultOAuthProvider(
"https://twitter.com/oauth/request_token",
"https://twitter.com/oauth/access_token",
"https://twitter.com/oauth/authorize");
String authUrl = httpOauthprovider.retrieveRequestToken(
httpOauthConsumer, CALLBACKURL);

this.startActivity(new Intent(Intent.ACTION_VIEW, Uri
.parse(authUrl)));
} catch (Exception e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}


@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);

Uri uri = intent.getData();
if (uri != null && uri.toString().startsWith(CALLBACKURL)) {

String verifier = uri
.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER);

// this will populate token and token_secret in consumer
try {
httpOauthprovider.retrieveAccessToken(httpOauthConsumer,
verifier);
} catch (OAuthMessageSignerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OAuthNotAuthorizedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OAuthExpectationFailedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OAuthCommunicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


//Important part where it actually sets the authorization so you can use it
a = new AccessToken(httpOauthConsumer.getToken(),
httpOauthConsumer.getTokenSecret());
twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(consumerKey, consumerSecret);
twitter.setOAuthAccessToken(a);
}
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}

要完成这项工作,您需要对您的 list 进行一些调整。

  • 授予它使用互联网的权限:
    <uses-permission android:name="android.permission.INTERNET" />
  • 将启动模式设置为singleInstance
    <activity
android:name="com.example.eredivisietwitter.MainActivity"
android:label="@string/app_name"
android:launchMode="singleInstance" >
  • 添加这个 Intent 过滤器
<intent-filter>
<action android:name="android.intent.action.VIEW" >
</action>

<category android:name="android.intent.category.DEFAULT" >
</category>

<category android:name="android.intent.category.BROWSABLE" >
</category>

<data
android:host="HOST"
android:scheme="SCHEME" >
</data>
</intent-filter>

确保在您的 Activity 中具有相同的主机和方案:

private final String CALLBACKURL = "SCHEME://HOST";

现在您已成功授权您的应用程序,您可以使用 Twitter 对象来请求时间线等。

例子:

private void getTweets(String user) {

try {
List<Status> statuses;
statuses = twitter.getUserTimeline(user);

System.out.println("Showing @" + user + "'s user timeline.");
for (Status status : statuses) {

System.out.println("@" + status.getUser().getScreenName()
+ " - " + status.getText());
}

} catch (TwitterException te) {
te.printStackTrace();
System.out.println("Failed to get timeline: " + te.getMessage());
}

}

瞧!

关于android - 如何使用 twitter4j 库获取屏幕名称的推文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16559814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com