4

最新の Facebook iOS SDK 3.0 を使用しています

ログインプロセスで助けが必要です:

まず、このプロパティを次のように宣言しますAppDelegate.h

@property (nonatomic, strong) FBSession *session;

ViewController クラスでは、これをコードで次のように使用します。

AppDelegate *delegate = [[UIApplication sharedApplication]delegate];
[delegate.session someproperty];

から呼び出される ViewController にもこのメソッドがありますviewDidLoad

-(void)login
{
    AppDelegate *delegate = [[UIApplication sharedApplication]delegate];
    [delegate.session accessToken];
    NSLog(@"%d",delegate.session.isOpen);
    if (!delegate.session.isOpen)
    {
        delegate.session = [[FBSession alloc] init];
        if (delegate.session.state == FBSessionStateCreatedTokenLoaded)
        {
            [delegate.session openWithCompletionHandler:^(FBSession *session,
                                                      FBSessionState status,
                                                      NSError *error) 
            {
              NSLog(@"%d", delegate.session.isOpen); // First Line //////////////////
            }];
        }
        NSLog(@"%@", delegate.session.description);   // Second Line //////////////////
    }
 }

Facebook アプリが承認された後、最初はNSLogゼロを出力し、2 番目は状態が?ではないNSLogことを示します。sessionFBSessionStateCreatedFBSessionStateOpen

これは2番目の出力ですNSLog:

2012-08-16 18:37:24.327 Facebook3[2418:f803] <FBSession: 0x6890ff0, state:    FBSessionStateCreated, loginHandler: 0x0, appID: 193716877424306, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x6890f20>, expirationDate: (null), refreshDate: (null), attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:()>

私がここに欠けているもの。

注 : https://developers.facebook.comのアプリ設定で、次のようにアプリを構成します: 1- iOS SSO 用に構成: 有効 2- iOS ネイティブ ディープ リンク: 有効 3- iOS バンドル ID: com.mycompany.appname

4

2 に答える 2

5

私は自分のプロジェクトにこのフレームワークを使用しました。正常に動作します。これは私の関連コードです

   -(IBAction)logIn:(id)sender;
{
    AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    if (!FBSession.activeSession.isOpen) {
        [appdelegate sessionOpener];
    }
    else {
        [self loginHelp];
    }

そして私の sessionOpener 関数は;

    -(void) sessionOpener
{

    [FBSession sessionOpenWithPermissions:nil
                        completionHandler:^(FBSession *session,
                                            FBSessionState status,
                                            NSError *error) {
                            // session might now be open.
                            if (!error) {
                                [self.viewController loginHelp];
                            }
                        }];

     NSLog(@"%d", FBSession.activeSession.isOpen);
    NSLog(@"%@", FBSession.activeSession.description );
}

わたしにはできる。あなたに役立つかもしれません。

私のコンソールプリントは次のとおりです。

     1
2012-08-16 22:24:55.899 TaraftarlikOyunu[838:c07] <FBSession: 0xd2512c0, state: FBSessionStateOpen, loginHandler: 0xd250240, appID: 433294056715040, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0xd24fda0>, expirationDate: 2012-10-15 19:02:34 +0000, refreshDate: 2012-08-16 19:05:03 +0000, attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(
    )>
于 2012-08-16T18:05:03.233 に答える
2

私はあなたと同じ問題を抱えていて、handleOpenURL を呼び出すときに FBSession と FBSession のインスタンスを使用していました。から変えました

- (BOOL)application:(UIApplication *)application
        openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation {
    [FBSession.activeSession facebookSession handleOpenURL:url];
}

これに

- (BOOL)application:(UIApplication *)application
        openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation {
    [session facebookSession handleOpenURL:url];
}
于 2012-08-22T11:14:49.487 に答える