2011-04-13 81 views
4

我已經在我的iPhone應用程序中使用Facebook的SDK實現了單點登錄功能,但是我只是想知道如何檢測他們是否已經驗證和/或接受權限?iPhone/Objective-C - Facebook單點登錄

我注意到,當檢查這個Facebook應用程序總是會產生,並說你已經驗證過,你總是被迫點擊Okay,每次打開應用程序時都很煩人。

有一個稱爲Socialcam的iPhone應用程序,只會要求您一次接受權限,每次從該點開始打開應用程序時,它都會知道您已經通過身份驗證並且再也不會再次詢問您。

我想這樣做,因爲我的應用程序嚴重依賴Facebook的權限。它在我的應用程序的各個不同區域使用他們的個人資料圖片和簽入權限(例如)。

如果我去使用NSHTTPCookieStorage

NSLog(@"%@", [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]); 

它爲我提供了這個信息。我將如何使用它來對Facebook Graph API進行身份驗證?

(
    "<NSHTTPCookie version:0 name:@\"datr\" value:@\"5WqaTXRFMRlijBtMvcGg-wS1\" expiresDate:@\"2013-04-06 07:42:45 +0000\" created:@\"323854917.000000\" sessionOnly:FALSE domain:@\".facebook.com\" path:@\"/\" secure:FALSE comment:@\"(null)\" commentURL:@\"(null)\" portList:[]>", 
    "<NSHTTPCookie version:0 name:@\"locale\" value:@\"en_US\" expiresDate:@\"2011-04-19 09:46:10 +0000\" created:@\"324294323.000000\" sessionOnly:FALSE domain:@\".facebook.com\" path:@\"/\" secure:FALSE comment:@\"(null)\" commentURL:@\"(null)\" portList:[]>", 
    "<NSHTTPCookie version:0 name:@\"m_user\" value:@\"myfacebookusernameishere%3A105339949%3Anwib6jXhKY2tIYjz%3A0%3Aajax_0%2Cwidth_0%3A1302162165\" expiresDate:@\"2011-07-06 07:42:45 +0000\" created:@\"323854917.000000\" sessionOnly:FALSE domain:@\".facebook.com\" path:@\"/\" secure:FALSE comment:@\"(null)\" commentURL:@\"(null)\" portList:[]>" 
) 

任何幫助將不勝感激。

+0

你有沒有檢查再次登錄的用戶的權限? – insomiac 2011-04-13 04:17:12

回答

1

Fulvio,

我還沒有看過我的Facebook代碼9個月以上。因此,以我的答案爲建議。也就是說,我剛剛檢查過它,並且身份驗證狀態保留在授權過程剩餘的Cookie中。這是很容易登錄:

NSLog(@"%@", [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]); 

享受, 安德魯

+0

我明白了,當我在家時,我會試試這個。我假設這會爲我提供某種access_token,然後我可以使用它調用圖API方法? – fuzz 2011-04-13 07:44:03

+0

@Andrew當我想調用需要access_token的Graph API方法時,不確定這意味着什麼?我讀了一些關於包含我的應用程序appId的「m_user」值,但是我不需要實際用戶access_token來發出請求?也許你正在使用的示例代碼會有所幫助? – fuzz 2011-04-13 09:07:42

1

餅乾有時並不實用,因爲使用下面的一個

[facebook requestForGraph:@"me" delegate:self] 

用新的Facebook API