I'm trying to use this code, and these instructions to do direct messages. Posting a normal tweet works perfectly fine, but when I try to send a direct message I get a 406.
This is the full code:
ACAccountStore *account = [[ACAccountStore alloc] init];
ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
// Request access from the user to access their Twitter account
[account requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
// Did user allow us access?
if (granted == YES)
{
// Populate array with all available Twitter accounts
NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType];
// Sanity check
if ([arrayOfAccounts count] > 0)
{
// Keep it simple, use the first account available
ACAccount *acct = [arrayOfAccounts objectAtIndex:0];
// Build a twitter request
NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1/direct_messages/new.format"];
NSDictionary *p = [NSDictionary dictionaryWithObjectsAndKeys:
@"UserName", @"screen_name",
@"Super awsome direct message", @"text",
nil
];
TWRequest *postRequest = [[TWRequest alloc]
initWithURL: url
parameters: p
requestMethod: TWRequestMethodPOST
];
// Post the request
[postRequest setAccount:acct];
// Block handler to manage the response
[postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSLog(@"Twitter response, HTTP response: %i", [urlResponse statusCode]);
CCLOG(@"Response Data\n%@", responseData);
if (!error)
CCLOG(@"%@", [error description]);
}];
}
}
}];