0

[self.facebook requestWithGraphPath:@ "me" andDelegate:self]; 上記の例外が発生します。これが私のコードです

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.facebook = [[Facebook alloc] initWithAppId:@"<app id hidden>" andDelegate:self];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
        && [defaults objectForKey:@"FBExpirationDateKey"]) {
        self.facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
        self.facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
    }

    if (![self.facebook isSessionValid]) {

        NSArray *permissions = [[NSArray alloc] initWithObjects:
                                @"user_likes", 
                                @"read_mailbox",
                                nil];
        [self.facebook authorize:permissions];

        [self.facebook requestWithGraphPath:@"me" andDelegate:self];

    }




}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

    return [self.facebook handleOpenURL:url]; 
}

- (void)fbDidLogin {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[self.facebook accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[self.facebook expirationDate] forKey:@"FBExpirationDateKey"];
    [defaults synchronize];



}
-(void)request:(FBRequest *)request didLoad:(id)result
{
    NSArray *messagesResult= result;
}
-(void) request:(FBRequest *)request didFailWithError:(NSError *)error
{
    NSLog(@"%@",error);
}
4

1 に答える 1

1

Facebook があなたを承認するのを待ってfbDidLogin、FB デリゲートを呼び出す必要があります。次に、fbDidLoginあなたが起動しますrequestWithGraphPath:。コードでは、トークンを受け取る前にグラフ リクエストを起動します。これは、FB 承認が非同期であるためです。

于 2012-06-07T17:30:57.893 に答える