[twitter-dev] iPhone twitter client
I tried to make a twitter client i have an api with 2 files TwitterRequest.h and TwitterRequest.m here is the code for the .m file // // TwitterRequest.m // Chirpie // // Created by Brandon Trebitowski on 6/15/09. // Copyright 2009 __MyCompanyName__. All rights reserved. // #import TwitterRequest.h @implementation TwitterRequest @synthesize username; @synthesize password; @synthesize receivedData; @synthesize delegate; @synthesize callback; @synthesize errorCallback; -(void)friends_timeline:(id)requestDelegate requestSelector: (SEL)requestSelector{ isPost = NO; // Set the delegate and selector self.delegate = requestDelegate; self.callback = requestSelector; // The URL of the Twitter Request we intend to send NSURL *url = [NSURL URLWithString:@http://api.twitter.com/1/statuses/ update.xml]; [self request:url]; } -(void)statuses_update:(NSString *)status delegate:(id)requestDelegate requestSelector:(SEL)requestSelector; { isPost = YES; // Set the delegate and selector self.delegate = requestDelegate; self.callback = requestSelector; // The URL of the Twitter Request we intend to send NSURL *url = [NSURL URLWithString:@http://api.twitter.com/1/statuses/ update.xml]; requestBody = [NSString stringWithFormat:@status=%@,status]; [self request:url]; } -(void)request:(NSURL *) url { theRequest = [[NSMutableURLRequest alloc] initWithURL:url]; if(isPost) { NSLog(@ispost); [theRequest setHTTPMethod:@POST]; [theRequest setValue:@application/x-www-form-urlencoded forHTTPHeaderField:@Content-Type]; [theRequest setHTTPBody:[requestBody dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]]; [theRequest setValue:[NSString stringWithFormat:@%d,[requestBody length] ] forHTTPHeaderField:@Content-Length]; } theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; if (theConnection) { // Create the NSMutableData that will hold // the received data // receivedData is declared as a method instance elsewhere receivedData=[[NSMutableData data] retain]; } else { // inform the user that the download could not be made } } - (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { //NSLog(@challenged %@,[challenge proposedCredential] ); if ([challenge previousFailureCount] == 0) { NSURLCredential *newCredential; newCredential=[NSURLCredential credentialWithUser:[self username] password:[self password] persistence:NSURLCredentialPersistenceNone]; [[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge]; } else { [[challenge sender] cancelAuthenticationChallenge:challenge]; // inform the user that the user name and password // in the preferences are incorrect NSLog(@Invalid Username or Password); } } - (void)connection:(NSURLConnection *)connection didReceiveResponse: (NSURLResponse *)response { // this method is called when the server has determined that it // has enough information to create the NSURLResponse // it can be called multiple times, for example in the case of a // redirect, so each time we reset the data. // receivedData is declared as a method instance elsewhere //[receivedData setLength:0]; } - (void)connection:(NSURLConnection *)connection didReceiveData: (NSData *)data { //NSLog([[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); // append the new data to the receivedData // receivedData is declared as a method instance elsewhere [receivedData appendData:data]; } - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { // release the connection, and the data object [connection release]; // receivedData is declared as a method instance elsewhere [receivedData release]; [theRequest release]; // inform the user NSLog(@Connection failed! Error - %@ %@, [error localizedDescription], [[error userInfo] objectForKey:NSErrorFailingURLStringKey]); if(errorCallback) { [delegate performSelector:errorCallback withObject:error]; } } - (void)connectionDidFinishLoading:(NSURLConnection *)connection { // do something with the data if(delegate callback) { if([delegate respondsToSelector:self.callback]) { [delegate performSelector:self.callback withObject:receivedData]; } else { NSLog(@No response from delegate);
[twitter-dev] iPhone twitter client
Hi, I'm planning on integrating with Twitter on the iPhone, I'm surprised that unlike Facebook, Twitter does not provide a standard Objective-C library, but I have found MGTwitterEngine. The problem is, the setup instructions are not that clear, then I found 'by accident' the Twitter-OAuth-iPhone project on GitHub, which seemed to at least bring up the Twitter authorisation page, but now fails with 401 errors and doesn't give me the opportunity to remove the token (hey, it's just a demo project, so I guess they don't handle it). The concern I have, is that when I registered my application, it wanted a callback URL, from what I understand I want the value OOB to be used, for our-of-band / Pin-code authorisation. I tried entering OOB and then it complained that I must enter a valid URL. I then deleted the URL completely and then the application was accepted, but I don't know whether a blank / missing URL == OOB? When I try to edit the application, it doesn't give me the option to add a URL. So, when programming for an iPhone, do you enter 'Application', or 'Web'. If the latter, what URL should be entered and can you edit it afterwards? Does anyone have advice on setting up MGTwitterEngine, or Twitter- OAuth-iPhone? For something that 'sounds' simple, it has taken me over a day of playing to get nowhere productive. However, I am new to iPhone develop, oAuth and the libraries mentioned above. I am planning on documenting what I learn on my blog afterwards, to help other iPhone developers. Feel free to follow me on Twitter, as I disucss the progress on my podcast BitBanterPC. Many thanks to anyone who can answer those questions. Regards, Rob. -- Twitter developer documentation and resources: http://dev.twitter.com/doc API updates via Twitter: http://twitter.com/twitterapi Issues/Enhancements Tracker: http://code.google.com/p/twitter-api/issues/list Change your membership to this group: http://groups.google.com/group/twitter-development-talk