0

アプリにログインして何かを共有するために、アプリケーションの 1 つで FacebookSDK を使用しています。ログインが完了し、この SDK を使用してアプリケーションにログインできるようになりました。以下は、ログインに使用しているコードです。

-(void)didSelectLoginWithFB
{
    if (FBSession.activeSession.isOpen) {
        [appDelegate closeSession];
    }
    else {
        [appDelegate openSessionWithAllowLoginUI:YES];
    }

    if(FBSession.activeSession.accessToken ){

        [self performSelector:@selector(FBLoginAction) withObject:nil];
    }

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(FBLoginDidFinish:)
                                                 name:@"FBLoginDidFinish"
                                               object:appDelegate];

}

-(void)FBLoginDidFinish:(NSNotification *)notification
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    [self performSelector:@selector(FBLoginAction) withObject:nil];

    }

-(void)FBLoginAction
{
    if (FBSession.activeSession.isOpen) {

    [[FBRequest requestForMe] startWithCompletionHandler:
         ^(FBRequestConnection *connection,
           NSDictionary<FBGraphUser> *user,

           NSError *error) {
             if (!error) {

                 NSDictionary *userInfo = (NSDictionary *)user;
                 NSLog(@"User dic %@",userInfo);
//                 fbUserId = user.id;
//                 NSLog(@"User dic %@",fbUserId);

                 userMail = [userInfo objectForKey:@"email"];
                 NSLog(@"User E Mail --- %@", userMail);
                  loginFlag = 200;
                 [self getDataFromServer:nil];
             }

             else{

                 UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Facebook Connection Error !!" message:nil delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil ];
                 [alert show];
             }

         }];



    }

}

今、私はユーザーの Facebook ウォール (タイムライン) に何かを投稿したいと考えています。この SDK を使用してこれを行うにはどうすればよいですか? この SDK について、developer.facebook.com から情報を取得できませんでした。助けてください !

4

1 に答える 1

3

私はこれが非常に遅いことを知っていますが、それが助けになることを願っています..

次のコードを使用して、ユーザーのウォール/タイムラインに投稿できます-

- (void)postToFacebook{

    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

    if (appDelegate.session.state != FBSessionStateCreated || !appDelegate.session.isOpen){

        // Create a new, logged out session.
        NSArray *permissions = [NSArray arrayWithObject:@"publish_actions, publish_stream"];
        appDelegate.session = [[FBSession alloc] initWithPermissions:permissions];

        // if the session isn't open, let's open it now and present the login UX to the user
        [appDelegate.session openWithCompletionHandler:^(FBSession *session,
                                                         FBSessionState status,
                                                         NSError *error) {
            if (appDelegate.session.state!=258 && appDelegate.session.state!=257) {

                [self postOpenGraphAction];
            }
        }];
    }else{
        if (appDelegate.session.isOpen) {
            [self postOpenGraphAction];
        }
    }
}

- (void)postOpenGraphAction {

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"", @"picture", @"", @"name", @"", @"link", @"", @"caption", @"", @"description", @"Your message to post", @"message", nil];

    AppDelegate *appDelegate = (AppDelegate *) [UIApplication sharedApplication].delegate;
    [FBSession setActiveSession:appDelegate.session];

    [FBRequestConnection startWithGraphPath:@"me/feed" parameters:params HTTPMethod:@"POST"
                          completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
                              if (error) {
                                  NSLog(@"Error on publishing story: %@", error);
                              } else {
                                                          NSLog(@"Published on wall successfully");
                              }
                          }];
}

FBSession activeSession の代わりに、AppDelegate で作成されたセッション オブジェクトを使用しました。コードごとに使用できます。

于 2013-06-24T11:38:06.917 に答える