我尝试过很多不同的方法并在互联网上搜索,找到一个教程,将JTwitter与OAuth结合使用。以下是我完成的以下步骤
下载Jtwitter和Signpost 在Java Builder中将它们添加为Jars
创建了一个运行
的简单按钮public class ShareGenerator extends Activity {
private static final String JTWITTER_OAUTH_KEY = "this_is_populated";
private static final String JTWITTER_OAUTH_SECRET = "this_is_populated";
Button menupopButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.share);
this.setContentView(R.layout.share);
this.txShare = (TextView)this.findViewById(R.id.lblshare);
this.menupopButton = (Button)this.findViewById(R.id.menupop);
menupopButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
TwitterSend();
}
});
}
我有我的班级
public void TwitterSend () {
OAuthSignpostClient client = new OAuthSignpostClient(JTWITTER_OAUTH_KEY, JTWITTER_OAUTH_SECRET, "oob");
Twitter jtwit = new Twitter("bob", client);
// open the authorisation page in the user's browser
client.authorizeDesktop();
// get the pin
String v = client.askUser("Please enter the verification PIN from Twitter");
client.setAuthorizationCode(v);
// Optional: store the authorisation token details
Object accessToken = client.getAccessToken();
// use the API!
jtwit.setStatus("Messing about in Java");
}
但是我甚至无法弹出OAuth屏幕。它到达那里时会崩溃。任何人都可以帮助我至少看到OAuth屏幕吗?我确实正确设置了导入。
答案 0 :(得分:3)
问题在于这一行,它使用了java.awt.Desktop:
// open the authorisation page in the user's browser
client.authorizeDesktop();
这适用于台式机,但不适用于Android。
相反,从client.authorizeUrl();
获取网址并将用户发送到那里。例如。用这样的东西:
URI url = client.authorizeUrl();
Intent myIntent = new Intent(Intent.VIEW_ACTION);
myIntent.setData(url);
startActivity(myIntent);
但我不是Android编码器!通过使用回调而不是oob
,几乎可以肯定会做得更好。希望其他人可以为此提供代码...
答案 1 :(得分:1)
OAuthSignpostClient authClient = new OAuthSignpostClient('apiKey','apiSecret','callbackUrl');
java.net.URI jUrl = authClient.authorizeUrl();
Uri.Builder uriBuilder = new Uri.Builder();
uriBuilder.encodedPath(jUrl.toString());
Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(jUrl.toString()));
startActivity(myIntent);
当然,我使用了'apiKey'
等等,以简洁起见。您需要在OAuthSignpostClient
构造函数中使用自己的密钥,密码和回调网址。
注意:您需要将JTwitter提供的Java.net.URI转换为Android.net.Uri,以使用它来启动新意图。
在此之后,你需要使用一个intent-filter来捕获回调网址,并使用你将从Twitter API获得的用户令牌和秘密做一些事情。
答案 2 :(得分:-2)
请参阅此帖[如果您关心,请查看转历历史]