#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. Поэтому я создал аккаунт в твиттере для своего приложения и дал туда ссылку.