[twitter-dev] iPhone twitter client

2011-01-18 Thread ronnocv
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

2011-01-16 Thread Rob Wilson - SpikyOrange
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