iPhone用のFacebookSDKでfbDidLoginに飛んで来ない
iPhone用のFacebookSDKでfbDidLoginに飛んで来ない現象で頭を悩ませました。。。
stackoverflowでしか引っ掛からないのですが、みんな言ってる事がマチマチで。
とりあえず、fbDidLoginにはコールバックが来たのでその方法をメモしておきます。
SDKは2011年12月28日現在最新のものを使っています。
SDKのバージョン?が古いタイプだと
とかで、delegateの指定位置が上記のような書き方になっているものもあるのですが、私が使用しているSDKではauthorizeを上記の用に書くとエラーが出るタイプです。
facebook = [[Facebook alloc] initWithAppId:APP_ID];
facebook.sessionDelegate = self;[facebook authorize:permissions andDelegate:self];
私は下記でコンパイルが通りました。
ですが、これで幾らやってもfbDidLoginには飛んできませんでした。
facebook = [[Facebook alloc] initWithAppId:APP_ID andDelegate:self];[facebook authorize:permissions];
当然、fbDidNotLoginにもfbDidLogout飛んでくる訳がなく。。。
UIApplicationDelegateも継承してなきゃダメなのかなとかで
に変更して
@interface FaceBookDelegate : NSObject
{
Facebook *facebook;
NSArray *permissions;
}
をオーバーライドしたりとかしてみますが、変わらず。。。
// For 4.2+ support
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [facebook handleOpenURL:url];
}
で、いろいろ調べていてこのエントリにぶつかって
限りなく私に近いな〜と思い、以下の結論に達しました。
結論的には、SDKのFacebook.mの296行目あたりのauthorizeの関数でsafariを使うのを止めました。
- (void) authorize:(NSArray *)permissions {
self.permissions = permissions;//[self authorizeWithFBAppAuth:YES safariAuth:YES];
[self authorizeWithFBAppAuth:NO safariAuth:NO];
}
う〜ん。。。正しい動きなんだろうか???