簡體   English   中英

如何使用 facebook ios sdk 實現單點登錄 (SSO)

[英]How to implement Single Sign On (SSO) using facebook ios sdk for iphone

我在我的應用程序中使用最新的 facebook ios sdk。 為了實現 SSO,Facebook 說:

修改你的應用程序的主 AppDelegate class 如下:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

在此方法中,調用應用程序的 Facebook 對象的 handleOpenURL 方法,確保傳入 url 參數。

我的查詢是:

  1. 上面的方法有什么用? 為什么叫它? 如果我在 facebook 演示應用程序中隱藏該方法,只要它總是一次又一次地將我重定向到登錄頁面。 如果我取消隱藏此方法,它會將我重定向到使用其他按鈕選項注銷(這是正確的)

  2. 現在這個方法是在 ApplicationDelegate.m 文件中定義的,我們必須在其中調用 facebook object。 How can I refer to the facebook object in this method as my facebook object is defined in a view controller class which is 4 times down the hierarchy.

注意:我已經嘗試過 DemoApp。 I do not understand how did they refer to the facebook object in the AppDelegate.m file inspite of the facebook object declared in ViewController file.

該方法用於確定您的應用程序是否會“處理”傳遞給它的 url。 例如,您的應用程序可以處理特定的 URL '方案',然后在運行時選擇它是否將處理特定的 URL。 如果您返回 NO,它將轉到其他可能也處理相同 URL 方案的應用程序。 盡管在 Facebook iOS SDK 的情況下,您的應用程序將是唯一處理 ZE6B3931A8D2C4D45708 方案的應用程序。

When you attempt to login to Facebook, the SDK passes values to either the Facebook application or to the Facebook website and it includes a callback URL so that the authorization process can be completed. 如果在應用程序委托中沒有此方法,該回調將無法正常工作。

有關 oAuth 的更多信息,請參閱:

http://developers.facebook.com/docs/authentication/

其次,這是一個比 Facebook SDK 更大的問題。 這與核心架構問題有關。 您可以在應用程序委托中包含 Facebook object,然后在視圖 controller 中引用它。 這是最簡單的方法。 在 controller 視圖中,您可以執行以下操作:

Facebook *facebook = [(YourAppDelegate *)[UIApplication sharedApplication] delegate] facebook];

此選項並不總是理想的,因為它使應用程序成為許多共享實例的垃圾場。

Another option is to have the application delegate pass the Facebook object to the view controller when you create it (the view controller would have a property for the Facebook object - and then the application delegate would pass it to the view controller after init).

MyViewController *vc = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
vc.facebook = self.facebook;

還有其他用於共享類實例的選項,例如 Objection iOS 框架,但這些選項更高級一些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM