无法使用Oauth向Twitter发布推文

时间:2011-07-07 15:45:55

标签: iphone twitter

Iam使用Outh将Twitter添加到我的应用程序中,我收到了来自Twitter团队的邮件。

感谢您的加入,我们将尊重您图片的机密性。您的应用程序现在可以使用xAuth,我们的文档可在此处获取:http://dev.twitter.com/pages/xauth

谢谢, Twitter API政策

现在我使用我的应用程序登录Twitter帐户,但我无法发布推文。

基本上Iam使用两个不同的视图,一个用于登录过程,第二个用于发布推文。

我的问题是。

1.如果我只使用一个视图,那么推文就会发布。但是根据我的要求,我需要从另一个视图发帖。我能怎样做?

我使用这种方法发布。

         [_engine sendUpdate:str];

请在这里帮助我。

3 个答案:

答案 0 :(得分:0)

我认为这会帮助你:

Oauth authorization callback

答案 1 :(得分:0)

就像我回答你的其他帖子一样,你在DetailViewController中使用相同的 _engine 对象。 您可以按如下方式实现此目的,   为同一个SA_Twitter声明一个对象....引擎一些类。   你只需在加载那个控制器时将这个 _engine 对象分配给detailviewController

在SettingsViewController的必要位置执行以下操作

//This engine object should be declared @ .h of settings
    if ([SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine:engine delegate:self]) {
                [self presentModalViewController:[SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine:engine delegate:self] animated:YES];
            }

在详细视图中为SA_OAuthTwitterEngine声明变量

SA_OAuthTwitterEngine *_engine;

@property (nonatomic, retain) SA_OAuthTwitterEngine *_engine;

最后,当你从settigs转到detailview时,

    DetailView  *detailObj=[[DetailView alloc] initWithNibName:@"DetailView" bundle:[NSBundle mainBundle]];
    detailObj._engine=self.engine;
    [self presentModalViewController:detailObj animated:YES];
    [detailObj release];

答案 2 :(得分:0)

如果您想在文本框中发布您输入的内容,我可以在此帮助您。 1.您必须将twitter4j库包含在gradle文件中,如下所示:

compile group: 'org.twitter4j', name: 'twitter4j-core', version: '4.0.1'

2。在您的代码中包含以下代码段:

public String sTweet;
EditText et_TweetText;
public static String consumerkey = "xxxxxxxxxxxxxxxxx";
public static String consumersecret = "xxxxxxxxxxxxxxxxx";
public static String accesstoken="xxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxx";
public static String accesstokensecret="xxxxxxxxxxxxxxxxx";

 protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
et_TweetText = (EditText) view.findViewById(R.id.et_TweetText);

bt_tweetIt = (Button) view.findViewById(R.id.bt_tweetIt);
bt_tweetIt.setOnClickListener(this);
}
@Override
public void onClick(View v) {
sTweet = et_TweetText.getText().toString();
Log.i(TAGTweet, "onClick- sTweet: " + sTweet);

if(CheckConnectivity()!=0){
Log.i(TAGTweet, "Internet Connection ON: ");
new UseTweeter().execute();
}
else {
Log.i(TAGTweet, "Internet Connection OFF: ");
ShowNoInternetConnectionAlert();
 }
}
 public class UseTweeter extends AsyncTask<String,String,String>{
 @Override
 protected String doInBackground(String... params) {
 TweetThisMessage();
 return null;
  }
 }
public void TweetThisMessage(){
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setOAuthAccessToken(accesstoken);
builder.setOAuthAccessTokenSecret(accesstokensecret);
builder.setOAuthConsumerKey(consumerkey);
builder.setOAuthConsumerSecret(consumersecret);
OAuthAuthorization auth = new OAuthAuthorization(builder.build());
Twitter twitter = new TwitterFactory().getInstance(auth);
try {
Log.i(TAGTweet, "sTweet in TweetThisMessage(): " + sTweet);
twitter.updateStatus(sTweet);
} catch (TwitterException e) {
e.printStackTrace();
return;
 }
}

希望它有所帮助。