Как отправить URL другу в Twitter

#ios #iphone #twitter

#iOS #iPhone #Twitter

Вопрос:

Как я могу отправить URL-адрес другу в twitter в iOS? Я могу отправить прямое сообщение, но это не позволяет мне отправлять URL-адрес в нем.

Вот мой код для отправки прямого сообщения другу в Твиттере и его работы.

 -(void)postMessageToFriend:(NSString *)ID withMessage:(NSString *)message {

    NotificatioName = notificationNameStr;

    ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
    [accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) {

        if (granted amp;amp; !error) {

            NSArray *accountsListAry = [accountStore accountsWithAccountType:accountType];

            int NoOfAccounts = [accountsListAry count];
            if (NoOfAccounts >0) {

                NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1.1/direct_messages/new.json"];
                twitterAccount = [accountsListAry lastObject];

                NSDictionary *p =@{@"status":@"Posted",@"screen_name":ID, @"text":message};
                SLRequest *postRequest = [SLRequest  requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:url parameters:p];

                [postRequest setAccount:twitterAccount];
                [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResposnse, NSError *error){
                    if (error) {
                        NSLog(@"error : %@",error);
                    }else{
                        NSError *jsonError = nil;

                        NSString * responseStr = [[NSString alloc] initWithData:responseData encoding:NSJSONWritingPrettyPrinted];

                        NSArray *friendsdata =
                        [NSJSONSerialization JSONObjectWithData: [responseStr dataUsingEncoding:NSUTF8StringEncoding]
                                                        options: NSJSONReadingMutableContainers
                                                          error: amp;jsonError];
                        NSLog(@"response value is: %@ %d ",friendsdata,[urlResposnse statusCode]);

                    }
                }];
            }
        }
    }];
}
 

Но если я попытаюсь добавить URL-адрес в свое сообщение, то он вернет мне эту ошибку

 {
    errors =     (
                {
            code = 226;
            message = "This request looks like it might be automated. To protect our users from spam and other malicious activity, we can't complete this action right now. Please try again later.";
        }
    );
}
 

Комментарии:

1. вы пробовали интегрировать x-callback-url instpaper? blog.instapaper.com/post/4637427075

2. @RachelGallen как это помогает?

Ответ №1:

Я думаю, что это не имеет ничего общего с вашим кодом, но с Twitter. По-видимому, они не позволяют отправлять ссылки в прямых сообщениях. https://support.twitter.com/articles/14606-posting-or-deleting-direct-messages .

Вы не можете сделать это даже как пользователь из официального клиента Twitter или с их веб-сайта. AFAIK, это известная проблема, и, как говорят, они работают над ней. Но прошло много времени с тех пор, как они так говорили.

Комментарии:

1. Спасибо за ответ. Да, я это проверил. А также пытался отправить URL-адрес с сайта Twitter в прямом сообщении, и это мне не позволяет. Но в любом случае можно отправить URL-адрес другу, кроме этого.

2. На данный момент я не думаю, что есть способ отправить URL-адрес подписчику / подписчикам Twitter, используя twitter API.

3. Это неправильно, Мариус. Вы можете полностью отправлять URL-адреса в прямых сообщениях через официальное приложение Twitter для iOS.

4. во-первых, я это проверю. Лично я не мог отправить URL-адрес другу в твиттере (на которого я подписываюсь, и он подписывается на меня в ответ) даже из официального клиента Twitter для mac. Но я попробую воспользоваться вашей библиотекой

Ответ №2:

Twitter отклоняет ваш запрос, поскольку он подписан потребительскими токенами OS X, как и все экземпляры SLRequest .

Если вы хотите отправлять URL-адреса в прямых сообщениях, вы должны подписывать свои запросы потребительскими токенами из официального клиента Twitter.

Это невозможно сделать с помощью SLRequest, но можно сделать с помощью сторонних библиотек, таких как STTwitter.

Ответ №3:

Это неправильный ответ, но все же я делюсь им. В моем случае я должен поделиться ссылкой на свое приложение в прямом сообщении. Сообщение с URL-адресом в тексте сообщения не работает, но к тексту сообщения можно добавить ссылку на любую учетную запись Twitter. Поэтому я создал аккаунт в твиттере для своего приложения и дал туда ссылку.