If this isn't the right place to ask this question, can you redirect me please?
So I've been messing with facebook connect for about 10 hours now, and I still am not able to send a query using fql to Facebook and get back anything let alone keep my app from crashing. Basically, when I try to log in, it never calls the session:didLogin: function, where I'm trying to send my query from. And when I try to send it manually, the console says:
2010-01-19 22:44:49.821 Facebook[3396:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: session_key)' 2010-01-19 22:44:49.823 Facebook[3396:207] Stack ( 29373531, 2446402825, 29457467, 29457306, 162565, 23131, 9411, 2802777, 3210146, 3218883, 3214095, 2907699, 2816028, 2842805, 37469905, 29158272, 29154376, 37463949, 37464146, 2846723, 8516, 8370 )
PLEASE HELP ME!!!!!!!! I've provided my source files below.
Here's my header:
// // FacebookViewController.h // Facebook // // Created by Austin on 1/19/10. // Copyright Dunham Academy 2010. All rights reserved. //
#import <UIKit/UIKit.h> #import "FBConnect/FBConnect.h"
@interface FacebookViewController : UIViewController <FBSessionDelegate, FBRequestDelegate> { FBSession *session; } //method called when I press button on screen -(IBAction)Query;
@end
Here's my implementation:
// // FacebookViewController.m // Facebook // // Created by Austin on 1/19/10. // Copyright Dunham Academy 2010. All rights reserved. //
#import "FacebookViewController.h" #import "FBConnect/FBSession.h"
@implementation FacebookViewController
/* // The designated initializer. Override to perform setup that is required before the view is loaded. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { // Custom initialization } return self; } */
/* // Implement loadView to create a view hierarchy programmatically, without using a nib. - (void)loadView { } */
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; session = [[FBSession sessionForApplication:@"Actual API KEY" secret:@"Actual Secret Key" delegate:self] retain]; FBLoginButton* button = [[[FBLoginButton alloc] init] autorelease]; [self.view addSubview:button]; }
-(IBAction)Query { NSString* fql = [NSString stringWithFormat:@"select uid,name from user where uid == %lld", aVariableForMyUserIDWhichIKnow]; NSDictionary* params = [NSDictionary dictionaryWithObject:fql forKey:@"query"]; [[FBRequest requestWithDelegate:self] call:@"facebook.fql.query" params:params];
}
- (void)request:(FBRequest*)request didLoad:(id)result {
NSLog(@"awesome"); }
- (void)request:(FBRequest*)request didFailWithError:(NSError*)error {
}
- (void)session:(FBSession*)session didLogin:(FBUID)uid { //This NSLog has never gotten displayed, which means this function has never been called... weird NSLog(@"hi"); NSString* fql = [NSString stringWithFormat:@"select uid,name from user where uid == %lld", uid]; NSDictionary* params = [NSDictionary dictionaryWithObject:fql forKey:@"query"]; [[FBRequest requestWithDelegate:self] call:@"facebook.fql.query" params:params]; }
- (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use. }
- (void)viewDidUnload { [session logout]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; }
- (void)dealloc { [super dealloc]; [session.delegates removeObject: self]; [session release], session = nil; }
@end |