2014-10-30 17 views
1

我遇到了同樣的問題here。最終發現的解決方案是破壞plist文件中的URL Schemes,以便在登錄Facebook時永遠不會讓應用程序訪問Safari,而是通過應用程序內的Web視圖登錄。但是,這看起來很不方便,因爲它不像Safari那樣保存用戶憑據。PFLoginViewController didLogin從未使用Facebook登錄時調用

爲什麼PFLoginViewController didLogin會在Facebook在webview中加載時調用,但在Facebook中加載Safari瀏覽器時未調用,我該如何解決該問題。這不僅僅是因爲它沒有被調用,而是一個用戶沒有被創建,或者在用safari加載facebook之後[PFUser currentUser]返回nil。

+0

我仍然有這個問題從我貼的原始線程。我將在接下來的幾天內重新審視它。我將深入研究這個問題。我一定會讓你知道我找到了什麼! – SuperKevin 2014-10-30 21:17:45

+0

如果我想出任何東西,我會告訴你,但現在我要休息一下。祝你好運! – 2014-10-30 23:45:10

+0

那麼你的問題是什麼? – rickerbh 2014-10-31 04:20:17

回答

1

這是一個很不錯的,但它實際上是一個簡單的修復。我回顧了自己的步驟,發現我不小心刪除了回撥方式。在這裏他們是:

// Facebook oauth callback 
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    return [FBSession.activeSession handleOpenURL:url]; 
} 

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication withSession:[PFFacebookUtils session]]; 
} 

- (void)applicationDidBecomeActive:(UIApplication *)application { 
    [FBAppCall handleDidBecomeActiveWithSession:[PFFacebookUtils session]]; 
} 

給它一個去,讓我知道這是否能解決您的問題。我不是100%確定是否這樣做,因爲我有一箇舊的不贊成的例子來看待。這裏是舊的棄用方式:

// Facebook oauth callback 
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    return [PFFacebookUtils handleOpenURL:url]; 
} 

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    return [PFFacebookUtils handleOpenURL:url]; 
} 

- (void)applicationDidBecomeActive:(UIApplication *)application { 
// Handle an interruption during the authorization flow, such as the user clicking the home button. 
    [FBSession.activeSession handleDidBecomeActive]; 
} 
+0

我以不同的方式實現了兩種方法。使用您發佈的前3個回調可以解決問題。謝謝! – 2014-11-06 05:12:41

相關問題