1

私はiOSを初めて使用し、アプリのFacebookログインを行いたいと思っています。

Facebookの新しいiOSSDKでたくさん試しました。しかし、私はエラーが発生しています。

コードは

-(IBAction)logIn:(id)sender;
{
    AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    [appdelegate sessionOpener];
    FBRequest *me = [FBRequest requestForMe];
    [me startWithCompletionHandler: ^(FBRequestConnection *connection, 
                                      NSDictionary<FBGraphUser> *my,
                                      NSError *error) {
        NSLog(@"id %@", my.id);
        NSLog(@"name %@", my.first_name);


        greet.text = my.first_name;//this is a label to show the name
        user.userID = my.id;//this is a FBProfilePictureView to show 



    }];
    [UIView transitionFromView:self.view 
                        toView:userPage 
                      duration:0.5 
                       options:(UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionTransitionFlipFromLeft)
                    completion:NULL];    }
`
and sessionOpener is;


    -(void) sessionOpener{
    [FBSession sessionOpenWithPermissions:nil 
                        completionHandler:^(FBSession *session, 
                                            FBSessionState status, 
                                            NSError *error) {
                            // session might now be open.  
                        }];

}

今私が得るエラーは; ログイン後にアプリに最初にログインすると、値がnullを返し、http400エラーが発生します。

しかし、ログインした後、アプリを2回実行すると、情報がtrueになり、私の名前が出力されます。

私のシミュレーターiphone5.1シミュレーター

4

1 に答える 1

5

セッションオブジェクトを作成して、リクエストに追加してみてください。

NSArray *permissions = [[NSArray alloc] initWithObjects:
                        @"email", 
                        @"publish_stream"
                        nil]; 
FBSession facebook_session = [[FBSession alloc] initWithPermissions:permissions];`

[[[FBRequest alloc] initWithSession:facebook_session graphPath:@"me"] startWithCompletionHandler:
 ^(FBRequestConnection *connection, 
   NSDictionary<FBGraphUser> *user, 
   NSError *error) {
     if (!error) {
         // get the data from user object
     }else {
         NSLog(@"Error: %@",error);
     }
 }];`
于 2012-07-26T18:06:12.497 に答える