できるだけ深く掘り下げてみます。Facebook 開発者サイトのガイドに従って、次のコードに行き着きました。
私のAppDelegate.hで:
@interface AppDelegate : UIResponder <UIApplicationDelegate, FBSessionDelegate> {
...
Facebook *facebook;
}
@property (nonatomic, retain) Facebook *facebook;
AppDelegate 実装では、facebook appid などを指定しました。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [facebook handleOpenURL:url];
}
- (void)fbDidLogin {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.menuViewController = [[MenuViewController alloc] init];
UIView *menuView = self.menuViewController.view;
facebook = [[Facebook alloc] initWithAppId:@"172938549507285" andDelegate:self];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]) {
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
if (![facebook isSessionValid]) {
[facebook authorize:nil];
}
...
}
アプリが閉じられなかった場合に備えて、同じメソッドを次の場所に実装しました。
- (void)applicationWillEnterForeground:(UIApplication *)application
{
facebook = [[Facebook alloc] initWithAppId:@"172938549507285" andDelegate:self];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]) {
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
if (![facebook isSessionValid]) {
[facebook authorize:nil];
NSLog(@"Facebook session is not valid");
}
NSLog(@"Application Entering Foreground.. setting segue to login flag");
[defaults setObject:@"yes" forKey:@"shouldgotologin"];
[defaults synchronize];
}
ただし、これをすべて実装した後でも、Facebookのログインウィンドウを開くことはありません...決して表示されません...以前に一度表示されました...しかし、コンソールログには何も表示されません....本当にわかりません理由を知っています... 私は非常に迷っています。誰かが私を助けることができますか?私を Facebook 開発者サイトに誘導しないでください...それは私がちょうど来たところです ありがとう!.