在实现facebook单点登录时,调用facebook ios sdk的注销函数不会清除用户凭证,也不会要求下次登录。
发布于 2011-05-20 14:39:50
我用的是Graph Api.....
- (IBAction)loginButtonPressed:(id)sender {
NSString *client_id = @"dsfgdgfgfgdfgvdfg";
//alloc and initalize our FbGraph instance
self.fbGraph = [[FbGraph alloc] initWithFbClientID:client_id];
//begin the authentication process.....
[fbGraph authenticateUserWithCallbackObject:self andSelector:@selector(fbGraphCallback:)
andExtendedPermissions:@"user_photos,user_videos,publish_stream,offline_access,user_checkins,friends_checkins"];
}
- (void)logOutButtonPressed {
NSLog(@"logout");
fbGraph.accessToken = nil;
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies])
{
NSString* domainName = [cookie domain];
NSRange domainRange = [domainName rangeOfString:@"facebook"];
if(domainRange.length > 0)
{
[storage deleteCookie:cookie];
}
}
[self loginButtonPressed:nil];
}
这段代码在FINE..TRY上运行
发布于 2011-05-20 14:34:53
我也有过同样的经历,但我认为这不是一个bug,尽管令人困惑。
Facebook在移动safari中放置了一个cookie,它表示一个有效的会话,也可能是一个访问令牌。如果你用Facebook lib注销,它会清除访问令牌和不在移动safari中使用的webview的所有cookie。实际上,你不能通过代码来做到这一点。现在,如果您返回并打开mobile safari,仍有一个有效的会话,您无需输入凭据即可再次登录。
你可以提交一个bug,询问Facebook是否可以使访问令牌服务器端无效。
https://stackoverflow.com/questions/6068205
复制相似问题