如何在Twitter中向朋友发送URL

时间:2014-06-24 09:32:31

标签: ios iphone twitter

如何将URL发送给iOS中的twitter好友。 我可以发送直接消息,但它不允许我在其中发送URL。

以下是我向Twitter Friend发布直接消息及其工作的代码。

-(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 && !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: &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.";
        }
    );
}

3 个答案:

答案 0 :(得分:3)

我认为这与您的代码无关,而是与Twitter有关。显然,他们不允许在直接消息中发送链接。 https://support.twitter.com/articles/14606-posting-or-deleting-direct-messages

即使是来自官方Twitter客户端或其网站的用户,也无法做到这一点。 AFAIK,这是一个众所周知的问题,他们据说正在研究它。但是他们这么久就说了。

答案 1 :(得分:0)

您的请求被Twitter拒绝,因为它是使用OS X使用者令牌签名的,因为SLRequest的所有实例都是。

如果您想在直接消息中发送URL,则必须使用官方Twitter客户端的消费者令牌签署您的请求。

使用SLRequest无法做到这一点,但可以使用STTwitter等第三方库来完成。

答案 2 :(得分:0)

这不是一个正确的答案,但我正在分享它。在我的情况下,我必须在直接消息中分享我的应用程序的链接。消息文本中带有URL的消息不起作用,但任何Twitter帐户的链接都可以与消息文本共享。所以我为我的应用程序制作了一个twitter app并在那里给出了链接。