iOS отправляет твит с тканью без создания твитов

Я хочу отправить твит, но я не хочу использовать его для создания твитов.

TWTRComposer *composer = [[TWTRComposer alloc] init];

[composer setText:@"just setting up my Fabric"];
[composer setImage:[UIImage imageNamed:@"fabric"]];

[composer showWithCompletion:^(TWTRComposerResult result) {
    if (result == TWTRComposerResultCancelled) {
        NSLog(@"Tweet composition cancelled");
    }
    else {
        NSLog(@"Sending Tweet!");
    }
}];

https://dev.twitter.com/twitter-kit/ios/compose этот метод отображает всплывающее окно, я хочу мгновенно отправить твит, как я могу сделать это с помощью Fabric API? такой тип возможен?

Эта часть кода не работает с тканью

 ACAccountStore *accountStore = [[ACAccountStore alloc] init];
    ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

    [accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error)
     {
         if(granted)
         {
             NSArray *accountsArray = [accountStore accountsWithAccountType:accountType];

             if ([accountsArray count] > 0)
             {
                 ACAccount *twitterAccount = [accountsArray objectAtIndex:0];

                 TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"https://upload.twitter.com/1/statuses/update_with_media.json"] parameters:[NSDictionary dictionaryWithObject:self.textViewOutlet.text forKey:@"status"] requestMethod:TWRequestMethodPOST];

                 [postRequest addMultiPartData:UIImagePNGRepresentation(image) withName:@"media" type:@"multipart/png"];
                 [postRequest setAccount:twitterAccount];

                 [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error)
                  {
                      //show status after done
                      NSString *output = [NSString stringWithFormat:@"HTTP response status: %i", [urlResponse statusCode]];
                      NSLog(@"Twiter post status : %@", output);
                  }];
             }
         }
     }];

person Gökhan Çokkeçeci    schedule 11.02.2015    source источник


Ответы (2)


Попробуй это:

func tweet(userId: String) {
        let client = TWTRAPIClient(userID: userId)

        let error: NSErrorPointer = NSErrorPointer()
        let url: String = "https://api.twitter.com/1.1/statuses/update.json"
        let message: [NSObject : AnyObject] = [
            "status" : "Sample Tweet Tweet!"
        ]

        let preparedRequest: NSURLRequest = client.URLRequestWithMethod("POST", URL: url, parameters: message, error: error)

        client.sendTwitterRequest(preparedRequest) { (response, data, jsonError) -> Void in
            do {
                let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as! [String:AnyObject]
                NSLog("%@", json)
                print("Tweet post!")
            } catch {
                print("json error: \(error)")
            }
        }
    }

Сначала вы должны получить userId пользователя. Если вы используете ручную регистрацию кнопки, используйте это:

func tweet(userId: String) {
        let client = TWTRAPIClient(userID: userId)

        let error: NSErrorPointer = NSErrorPointer()
        let url: String = "https://api.twitter.com/1.1/statuses/update.json"
        let message: [NSObject : AnyObject] = [
            "status" : "Sample Tweet Tweet!"
        ]

        let preparedRequest: NSURLRequest = client.URLRequestWithMethod("POST", URL: url, parameters: message, error: error)

        client.sendTwitterRequest(preparedRequest) { (response, data, jsonError) -> Void in
            do {
                let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as! [String:AnyObject]
                NSLog("%@", json)
                print("Tweet post!")
            } catch {
                print("json error: \(error)")
            }
        }
    }

Извините, я написал этот код с помощью Swift.

person Alvin John    schedule 29.03.2016
comment
Спасибо... у вас есть это для Swift 3? - person Jonny; 28.03.2017

https://github.com/nst/STTwitter

я использовал этот API, проще, чем ткань :)

[_twitter postStatusUpdate:@"tweet text" inReplyToStatusID:nil latitude:nil longitude:nil placeID:nil displayCoordinates:nil trimUser:nil successBlock:nil errorBlock:nil];

очень легко отправить твит без композитора, может быть, это кому-то поможет ...

person Gökhan Çokkeçeci    schedule 12.02.2015
comment
Вы пробовали код выше, который я использую, но я получаю Domain=STTwitterTwitterErrorDomain Code=220 Ваши учетные данные не разрешают доступ к этому ресурсу. UserInfo=0x7ff4bb5a2720 {NSLocalizedDescription=Ваши учетные данные не разрешают доступ к этому ресурсу., NSUunderlyingError=0x7ff4bb598c10 Статус HTTP 403: Запрещено - person RameshIos; 18.03.2015
comment
Вы должны сначала получить разрешение - person Gökhan Çokkeçeci; 23.03.2015
comment
как получить разрешения? Я включил Разрешить использовать это приложение для входа в Twitter и изменить разрешения на чтение, запись и доступ к прямым сообщениям. - person RameshIos; 24.03.2015
comment
У вас есть приложение для твиттера? Вы должны использовать consumerKeyTextField и consumerSecretTextField - person Gökhan Çokkeçeci; 24.03.2015