2012-02-06 102 views
0

我最近被分配到foursquare工作。我有一个需要验证并访问foursquare环境的应用程序。我无法访问以下代码来访问checkins。我已经成功进行了身份验证,但事实是,当我进行了请求检查时,会出现一个errorType invalid_auth代码401。我只是不知道这有什么问题。iOS:四方请求失败

这是我的完整代码;我正在使用fsq包装我在github中找到:

#import "FSQViewController.h" 

#define kClientID  @"XXXXXXXXXXXXXXXXXXXXXXX" 
#define kCallbackURL @"invitation://foursquare" 

@interface FSQViewController() 
@property(nonatomic,readwrite,strong) BZFoursquare *foursquare; 
@property(nonatomic,strong) BZFoursquareRequest *request; 
@property(nonatomic,copy) NSDictionary *meta; 
@property(nonatomic,copy) NSArray *notifications; 
@property(nonatomic,copy) NSDictionary *response; 
@end 


@implementation FSQViewController 

@synthesize foursquare = foursquare_; 
@synthesize request = request_; 
@synthesize meta = meta_; 
@synthesize notifications = notifications_; 
@synthesize response = response_; 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 

#pragma mark - View lifecycle 

- (id) initWithCoder:(NSCoder *)aDecoder{ 
    self = [super initWithCoder:aDecoder]; 
    if(self){ 
     self.foursquare = [[BZFoursquare alloc]initWithClientID:kClientID callbackURL:kCallbackURL]; 
     foursquare_.version = @"20120206"; 
     foursquare_.locale = [[NSLocale currentLocale]objectForKey:NSLocaleLanguageCode]; 
     foursquare_.sessionDelegate = (id<BZFoursquareSessionDelegate>) self; 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
} 

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [super viewDidDisappear:animated]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 



#pragma mark - 
#pragma mark BZFoursquareRequestDelegate 

- (void)requestDidFinishLoading:(BZFoursquareRequest *)request { 
    NSLog(@"test"); 
    self.meta = request.meta; 
    self.notifications = request.notifications; 
    self.response = request.response; 
    self.request = nil; 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
} 

- (void)request:(BZFoursquareRequest *)request didFailWithError:(NSError *)error { 
    NSLog(@"HERE > %s: %@", __PRETTY_FUNCTION__, error); 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:[[error userInfo] objectForKey:@"errorDetail"] delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", @"") otherButtonTitles:nil]; 
    [alertView show]; 
    self.meta = request.meta; 
    self.notifications = request.notifications; 
    self.response = request.response; 
    self.request = nil; 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
} 

#pragma mark - 
#pragma mark BZFoursquareSessionDelegate 

- (void)foursquareDidAuthorize:(BZFoursquare *)foursquare { 
    NSLog(@"authorized!"); 
} 

- (void)foursquareDidNotAuthorize:(BZFoursquare *)foursquare error:(NSDictionary *)errorInfo { 
    NSLog(@"not authorized! %s: %@", __PRETTY_FUNCTION__, errorInfo); 
} 

- (IBAction)click:(id)sender { 

    if (![foursquare_ isSessionValid]){ 
     NSLog(@"here"); 
     [foursquare_ startAuthorization]; 
    } else { 
     [foursquare_ invalidateSession]; 
    } 
} 

- (IBAction)checkin:(id)sender { 
    NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:@"4d341a00306160fcf0fc6a88", @"venueId", @"public", @"broadcast", kClientID, @"oauth_token", nil]; 
    self.request = [foursquare_ requestWithPath:@"checkins/add" HTTPMethod:@"POST" parameters:parameters delegate:self]; 
    [request_ start]; 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 
} 

@end 

你能帮助我吗?任何帮助将高度赞赏。

+0

它看起来不错..你可以调试它,并给我们做的完全格式化后的请求.. 401从4SQ的手段kClientID持有无效标记。 – 2012-02-06 10:08:56

+0

我把我在客户注册的客户端编号放在四方.. – Aldee 2012-02-07 01:54:42

回答

-1

我使用下面&它的代码为我工作:

NSDictionary *parameters = @{@"venueId": @"4a0c6465f964a5202a751fe3", @"broadcast": @"public",@"oauth_token":kClientID};