如何将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.";
}
);
}
答案 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并在那里给出了链接。