3

私は数時間を費やしました。ウェブで見つけた関連するすべてのものを読んでくださいが、これを解決できませんでした。https://developers.facebook.com/docs/ios/login-ui-control/に記載されている手順に従ってFBLoginViewを使用しています

FBLogin ボタンが表示されます。私はそれをクリックします。ログインします。コールバック loginViewShowingLoggedInUser と loginViewShowingLoggedOutUser が呼び出されます。問題は loginViewFetchedUserInfo が呼び出されないことです。そのため、ユーザーに関する情報 (名前、ユーザー ID、電子メールなど) を取得できません。

私が使用しているコードは次のとおりです。

CGRect loginFrame=CGRectMake(MARGIN,currentFrame.size.height-LOGINBUTTONHEIGHT,50 , 20);//width, height don't matter
FBLoginView * FBLoginView1 = [[FBLoginView alloc] init];
FBLoginView1.readPermissions =    @[@"email",
                                 @"basic_info",
                                 @"user_location",
                                 @"user_birthday",
                                 @"user_likes"];
FBLoginView1.frame = loginFrame;
FBLoginView1.delegate = self;
[[self view] addSubview:FBLoginView1];

[FBLoginView1 sizeToFit];

私を助けてください。

4

3 に答える 3

4

それが役立つかもしれません:私は同じ問題を抱えています。私にとっての解決策は、デリゲートを正しく割り当てなかったことです。プログラム的に、Facebookはあなたに提案します

FBLoginView *loginView = [[FBLoginView alloc] init];
loginView.delegate = self;

しかし、ストーリーボードを介してビューを設定したため、それができませんでした。そのため、インスペクタ コネクタで、デリゲート アウトレットをファイルの所有者に接続します (アウトレットをシーンに配線しただけです)。

それが役に立てば幸い :)

于 2014-04-29T22:54:59.263 に答える
1

解決策を見つけました。実際には、loginViewShowingLoggedInUser の後に loginViewFetchedUserInfo が呼び出されます。loginViewShowingLoggedInUser から modalviewcontroller を却下していたため、loginViewFetchedUserInfo を取得していませんでした。そのため、loginViewFetchedUserInfo を取得することはありませんでした。modalviewcontroller を閉じないと、loginViewFetchedUserInfo が返されます。

解決策の詳細はこちら。LoginViewcontroller (実装したクラスの名前) の ViewDidLoad に FBLoginView を作成しています。FBLoginView (ViewDidLoad 関数内) を作成するときにデリゲートを設定します。 LoginViewController は presentViewController 関数を使用して提示されます。loginViewShowingLoggedInUser でビュー コントローラーを閉じていたため、問題が発生していました。そのため、loginViewFetchedUserInfo を受け取ることはありませんでした (loginViewShowingLoggedInUser の後に loginViewFetchedUserInfo が呼び出されます)。

私にとってうまくいった解決策は、loginViewFetchedUserInfo から LoginViewcontroller を却下することです。

詳細が他の人に役立つことを願っています。

于 2013-10-12T14:19:02.527 に答える
0

私も同じ問題を抱えていました。私の場合、delegate正しく設定されていませんでした。に次の行があることを確認しますlogincontroller

FBLoginView *loginView = [[FBLoginView alloc] init];
loginView.delegate = self;
于 2015-08-13T00:28:59.757 に答える