Facebook注销无法通过Facebook Connect iPhone API正常工作
我正在执行以下代码从iPhone应用程序注销Facebook:Facebook注销无法通过Facebook Connect iPhone API正常工作,iphone,ios,facebook,ipad,Iphone,Ios,Facebook,Ipad,我正在执行以下代码从iPhone应用程序注销Facebook: if ([mFacebook isSessionValid]) { [mFacebook logout]; } 此代码成功运行,并在此之后调用委托,其中我正在清除访问令牌: - (void)fbDidLogout { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults removeObjectForKey:
if ([mFacebook isSessionValid]) {
[mFacebook logout];
}
此代码成功运行,并在此之后调用委托,其中我正在清除访问令牌:
- (void)fbDidLogout
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:@"FBAccessTokenKey"];
[defaults removeObjectForKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
但当我再次登录Facebook时,它不会要求输入用户名和密码
我做错了什么?请尝试以下代码:
- (void) fbDidLogout {
// Remove saved authorization information if it exists
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]) {
[defaults removeObjectForKey:@"FBAccessTokenKey"];
[defaults removeObjectForKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
}
不要忘记在AppDelegate中为facebook.h创建一个实例。尝试以下代码:
- (void) fbDidLogout {
// Remove saved authorization information if it exists
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]) {
[defaults removeObjectForKey:@"FBAccessTokenKey"];
[defaults removeObjectForKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
}
不要忘记在AppDelegate中为
facebook.h
创建一个实例。只需将这一行添加到fbdilogout方法中即可
[mFacebook invalidateSession];
这肯定会让你从Facebook注销。只需将这一行添加到fbDidLogout方法中即可
[mFacebook invalidateSession];
这肯定会使您从Facebook注销。您是否使用FB mobile登录对话框?在Facebook.m中,添加以下代码以删除m.Facebook.com域中的cookie
- (void)invalidateSession {
...
NSArray* facebookMCookies = [cookies cookiesForURL:
[NSURL URLWithString:@"https://m.facebook.com"]];
for (NSHTTPCookie* cookie in facebookMCookies) {
[cookies deleteCookie:cookie];
}
...
}
您是否正在使用FB移动登录对话框?在Facebook.m中,添加以下代码以删除m.Facebook.com域中的cookie
- (void)invalidateSession {
...
NSArray* facebookMCookies = [cookies cookiesForURL:
[NSURL URLWithString:@"https://m.facebook.com"]];
for (NSHTTPCookie* cookie in facebookMCookies) {
[cookies deleteCookie:cookie];
}
...
}
尝试从Facebook应用程序注销。它可能只是从Facebook应用程序获取令牌。尝试从Facebook应用程序注销。它可能只是从Facebook应用程序中获取令牌。尝试在FBD注销块的末尾添加这些令牌:
mFacebook.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];
}
}
尝试在fbDidLogout块的末尾添加以下内容:
mFacebook.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];
}
}
这些方法是否被调用?您在哪里为注销按钮编写了代码?是的,这些方法被成功调用,但当我登录时,我没有被要求输入用户名和密码。它直接表示您以“SampleName”身份登录。理想情况下,它应该询问用户名和密码。如果我卸载应用程序,它会要求提供凭据。如果你可以粘贴你的所有facebook集成代码,效果会更好。这些方法是否被调用?你在哪里为注销按钮编写了代码?是的,这些方法被成功调用,但当我登录时,我不会被要求提供用户名和密码。它直接表示您以“SampleName”身份登录。理想情况下,它应该询问用户名和密码。如果我卸载应用程序,它会要求提供凭据。如果你可以粘贴你的facebook集成的所有代码,效果会更好。很抱歉,你提到的代码与我在问题中编写的代码相同。你的会话没有失效。这就是问题所在。你是否在ViewController中添加了FBSessionDelegate?实际上是在我第一次安装应用程序时我调用下面的应用程序代码[mFacebook authorize:mArrayFBPermissions];这段代码首先显示safari中的登录页面,然后显示权限页面。但是如果在登录后注销,那么它只会在safari中打开权限页面。哦……那么我认为你的safari会为facebook存储会话。如果您在没有safari Auth的情况下尝试它,那么您可能会让它工作。很抱歉,您提到的代码与我在问题中编写的代码相同。您的会话没有失效。这就是问题所在。您是否在ViewController中添加了FBSessionDelegate?实际上,当我第一次安装应用程序时,我调用了以下代码[mFacebook authorize:mArrayFBPermissions];此代码首先在safari中显示登录页面,然后显示权限页面。但是如果在登录后注销,则只会在safari中打开权限页面。哦……那么我认为您的safari会为facebook存储会话。如果您在没有safari Auth的情况下尝试,则可能会成功。