有没有人对Android的Twitter进行OAuth身份验证的工作示例?我曾试图同时使用Twitter4J和SignPost,但我得到了非常奇怪的错误,说twitter.com是一个未知的主机.我已经知道使用SignPost库和Android 存在问题(在谷歌Android下),并且根据项目的主页,CommonsHttpOAuth*类应该有效.
这是我的SignPost:
private void getReqTokenAndAuthenticateUsingSignPost() {
String callbackUrl = "twitter-test:///";
CommonsHttpOAuthConsumer consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY,
CONSUMER_SECRET);
CommonsHttpOAuthProvider provider = new CommonsHttpOAuthProvider(
"http://twitter.com/oauth/request_token", "http://twitter.com/oauth/access_token",
"http://twitter.com/oauth/authorize");
String tokenStr = consumer.getToken();
String tokenSecretStr = consumer.getTokenSecret();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor edit = preferences.edit();
edit.putString(REQ_TOKEN, tokenStr);
edit.putString(REQ_TOKEN_SECRET, tokenSecretStr);
try {
String authUrl = provider.retrieveRequestToken(consumer, callbackUrl);
Uri authenticationUri = Uri.parse(authUrl);
startActivity(new Intent(Intent.ACTION_VIEW, authenticationUri));
} catch (OAuthMessageSignerException e) {
e.printStackTrace();
} catch (OAuthNotAuthorizedException e) {
e.printStackTrace();
} catch (OAuthExpectationFailedException e) {
e.printStackTrace();
} …Run Code Online (Sandbox Code Playgroud) 我正在构建一个Android应用程序,我被困在一个地方.我使用twitter4j,路标apis在我的应用程序中集成了Twitter.我成功编写了将文本放入用户配置文件的代码,但我也希望用户在点击"关注我们的推特"按钮时关注我的应用.
有人可以给我参考或指导编写这样的代码吗?
在我的activity的onNewIntent()方法中, getIntent().getData();始终为null.在转到onCreate()或任何其他生命周期函数之前,它肯定会使用此方法.它从浏览器返回此处,我不知道为什么它getIntent().getData()是null.
此活动会像这样启动浏览器 context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(requestToken.getAuthenticationURL())));
并返回此处
@Override
public void onNewIntent(Intent intent){
super.onNewIntent(intent);
Uri uri = getIntent().getData();
if (uri != null && uri.toString().startsWith(TwitterConstants.CALLBACK_URL)) {...}
}
Run Code Online (Sandbox Code Playgroud)
但是uri总是空的.
明显的东西:
<activity
android:name="myapp.mypackage.TweetFormActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="oauth" android:host="myapp"/>
</intent-filter>
</activity>
static final String CALLBACK_URL = "oauth://myapp";
Run Code Online (Sandbox Code Playgroud)
我在这里想念的是什么?谢谢
我使用twitter4j来获取我的时间轴:
twitter.getHomeTimeline(new Paging(1,100));
Run Code Online (Sandbox Code Playgroud)
我如何获得接下来的100条推文?一般来说,是否可以指定两个推文或两个时间点,并获得两者之间发布的推文?
我在使用Twitter4J时收到错误消息:
java.lang.IllegalStateException: Access token already available.
twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:112)
twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:104)
twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:276)
twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:269)
[...]
Run Code Online (Sandbox Code Playgroud)
调用该方法时抛出此异常Twitter.getOAuthRequestToken().我想获取授权URL来验证下一个用户.
我怎么可能解决这个问题?我只将OAuthConsumerKey,OAuthConsumerSecret,OAuthAccessToken和OAuthAccessTokenSecret放到Twitter4J属性中.但是,如何接收授权URL以验证新用户?
谢谢和问候,
马丁
我有一个Android应用程序启动TwitterStream与Twitter4j,我正在寻找帮助,如果我不再需要流停止/关闭它.我根据偏好更改启动了流,但需要根据用户操作在我的应用的其他部分停止它.
以下是我启动流的方式,这是我在文档中找到的典型方法:
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true);
cb.setOAuthConsumerKey(A);
cb.setOAuthConsumerSecret(B);
cb.setOAuthAccessToken(C);
cb.setOAuthAccessTokenSecret(D));
TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();
StatusListener listener = new StatusListener() {
@Override
public void onDeletionNotice(StatusDeletionNotice arg0) {
}
.
.
.
};
FilterQuery fq = new FilterQuery();
fq.follow(new long[]{X});
twitterStream.addListener(listener);
twitterStream.filter(fq);
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,谢谢!
我正在尝试绘制草图,以从特定用户的Twitter时间轴中获取最后100条推文。我正在使用Twitter4j,并且草图可以正常工作,但我了解到Twitter4J默认将时间轴结果限制为20。
我已经看过此页面,以了解有关使用“查询”时获得超过100个信息的信息,但是在尝试获取特定用户的时间轴时,似乎工作方式有所不同。 如何使用Twitter4j检索100多个结果
感谢您的光临!
这是我的草图:
import twitter4j.conf.*;
import twitter4j.internal.async.*;
import twitter4j.internal.org.json.*;
import twitter4j.internal.logging.*;
import twitter4j.json.*;
import twitter4j.internal.util.*;
import twitter4j.management.*;
import twitter4j.auth.*;
import twitter4j.api.*;
import twitter4j.util.*;
import twitter4j.internal.http.*;
import twitter4j.*;
import twitter4j.internal.json.*;
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey("XXXXXX");
cb.setOAuthConsumerSecret("XXXXXX");
cb.setOAuthAccessToken("XXXXXX");
cb.setOAuthAccessTokenSecret("XXXXXX");
java.util.List statuses = null;
Twitter twitter = new TwitterFactory(cb.build()).getInstance();
String userName ="XXXXXX";
int numTweets = 100;
String[] twArray = new String[numTweets];
try {
statuses = twitter.getUserTimeline(userName);
}
catch(TwitterException e) {
}
for (int i=0; i<statuses.size(); i++) {
Status status = …Run Code Online (Sandbox Code Playgroud) 403:该请求已被理解,但已被拒绝.随附的错误消息将解释原因.由于更新限制而拒绝请求时使用此代码(https://support.twitter.com/articles/15364-about-twitter-limits-update-api-dm-and-following)W/System.err( 1466):消息 - SSL是必需的代码 - 9条目损坏或截断
Relevant discussions can be found on the Internet at:
http://www.google.co.jp/search?q=b2b52c28 or
http://www.google.co.jp/search?q=10981ab8
0
TwitterException{exceptionCode=[b2b52c28-10981ab8], statusCode=403, message=SSL is required, code=92, retryAfter=-1, rateLimitStatus=null, version=3.0.3}
at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:177)
twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:98)
twitter4j.TwitterImpl.post(TwitterImpl.java:1871)
twitter4j.TwitterImpl.updateStatus(TwitterImpl.java:241)
br.com.dina.oauth.instagram.example.Facebook$2$1$1.onClick(Facebook.java:121)
android.view.View.performClick(View.java:3480)
android.view.View$PerformClick.run(View.java:13983)
android.os.Handler.handleCallback(Handler.java:605)
android.os.Handler.dispatchMessage(Handler.java:92)
android.os.Looper.loop(Looper.java:137)
android.app.ActivityThread.main(ActivityThread.java:4340)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud) 我想发出关键字或主题标签的查询,并从包含该关键字的所有推文中检索所有图像.我可以使用带有Java的Twitter4J轻松发出查询并检索生成的推文.我知道http://t.co/xxxx我可以在浏览器中访问的链接并查看相关图像.那个图像在https://pbs.twimg.com/xxxxx.所以我需要做的就是在我的代码中完成这个过程!
我可以http://t.co/xxxx很容易地解析每条推文中的链接.但是,当我从该链接中检索所有html时,我看不到任何https://pbs.twimg.com/xxxx图像:(.我认为正在发生的事情是Twitter正在通过JavaScript加载这些图像.
有什么方法可以轻松检索每条推文上的图像吗?
这是我到目前为止:
package com.company;
import twitter4j.*;
import twitter4j.conf.ConfigurationBuilder;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) throws Exception {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey("xxxxxxxxxx")
.setOAuthConsumerSecret("xxxxxxxxxxxx")
.setOAuthAccessToken("xxxxxxxxx-xxx-xxxxxxxx")
.setOAuthAccessTokenSecret("xxxxxxxxxxxxxxxxxxx");
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();
Query query = new Query("#hashtag");
QueryResult result = twitter.search(query);
Pattern pattern = Pattern.compile("http://t.co/\\w{10}");
Pattern imagePattern = Pattern.compile("https\\:\\/\\/pbs\\.twimg\\.com/media/\\w+\\.(png | jpg …Run Code Online (Sandbox Code Playgroud) 当我将twitter hbc依赖项添加到我的pom.xml时,我收到了一个错误.我按照这里的说明进行操作.我不明白,如果它是一个依赖性问题我应该在网上找到一个修复,但如果我注释掉那个依赖,我的服务器正在启动..
这是我添加到我的pom.xml中的内容:
<dependency>
<groupId>com.twitter</groupId>
<artifactId>hbc-core</artifactId> <!-- or hbc-twitter4j -->
<version>2.2.0</version> <!-- or whatever the latest version is -->
</dependency>
Run Code Online (Sandbox Code Playgroud)
这是错误:
2015-06-20T18:13:52.877+0200|Severe: Exception while loading the app : CDI deployment failure:WELD-001408: Unsatisfied dependencies for type Set<Service> with qualifiers @Default
at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject com.google.common.util.concurrent.ServiceManager(Set<Service>)
at com.google.common.util.concurrent.ServiceManager.<init>(ServiceManager.java:0)
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type Set<Service> with qualifiers @Default
at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject com.google.common.util.concurrent.ServiceManager(Set<Service>)
at com.google.common.util.concurrent.ServiceManager.<init>(ServiceManager.java:0)
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:370)
at …Run Code Online (Sandbox Code Playgroud)