iPhone/Objective-C - Facebook单点登录

4
我已经在我的 iPhone 应用程序中使用了 Facebook 的 SDK 实现了单点登录功能,但我想知道如何检测用户是否已经通过认证并/或接受了权限?当进行此检查时,我注意到 Facebook 应用程序总是弹出并说您已经通过身份验证,每次打开应用程序都被迫点击“好的”,这很烦人。Socialcam 是一款 iPhone 应用程序,它只会要求您一次接受权限,并且每次从那时起打开应用程序时,它都知道您已经通过身份验证,不会再次请求权限。由于我的应用程序在各个不同的区域中都使用他们的个人资料图片和签到权限,因此我希望也能做到这一点。如果我使用 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:[]>"
)

非常感谢您的帮助。


你是否已经检查了正在重新登录的用户的权限? - insomiac
3个回答

1

有时候 cookie 并不是很有用,所以可以使用下面的方法

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

使用新的Facebook API


1

富尔维奥,

我已经有9个月没有看过我的Facebook代码了。 因此,请把我的答案视为建议。 话说,我刚刚重新审查了它,认证状态是在授权过程中剩余的cookie中维护的。 这很容易记录:

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

祝愉快, 安德鲁


我明白了,回家后我会尝试一下。我猜这会给我提供某种access_token,然后我可以用它来调用图形API方法? - fulvio
@Andrew 不太确定当我想调用需要访问令牌的Graph API方法时,这到底意味着什么?我在某个地方读到过“m_user”值包含我的应用程序appId,但是我不需要实际用户的访问令牌才能发出请求吗?也许你正在使用的一些示例代码会有所帮助? - fulvio


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接