`
zhangziyangup
  • 浏览: 1186903 次
文章分类
社区版块
存档分类
最新评论

facebook ios sdk 无法登出bug的解决方法

 
阅读更多

先说下facebook ios sdk中如何不跳到safari而在程序内登陆

//  UIDevice *device = [UIDevice currentDevice];
//  if ([device respondsToSelector:@selector(isMultitaskingSupported)] && [device isMultitaskingSupported]) {
//    if (tryFBAppAuth) {
//      NSString *scheme = kFBAppAuthURLScheme;
//      if (_urlSchemeSuffix) {
//        scheme = [scheme stringByAppendingString:@"2"];
//      }
//      NSString *urlPrefix = [NSString stringWithFormat:@"%@://%@", scheme, kFBAppAuthURLPath];
//      NSString *fbAppUrl = [FBRequest serializeURL:urlPrefix params:params];
//      didOpenOtherApp = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:fbAppUrl]];
//    }
//
//    if (trySafariAuth && !didOpenOtherApp) {
//      NSString *nextUrl = [self getOwnBaseUrl];
//      [params setValue:nextUrl forKey:@"redirect_uri"];
//
//      NSString *fbAppUrl = [FBRequest serializeURL:loginDialogURL params:params];
//      didOpenOtherApp = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:fbAppUrl]];
//    }
//  }

在Facbook.m文件中,注释掉上面那段即可,我的版本是241到260行


然后说下无法登出的原因,先看下登出时调用的方法:

- (void)logout {
    [self invalidateSession];
        
    if ([self.sessionDelegate respondsToSelector:@selector(fbDidLogout)]) {
        [self.sessionDelegate fbDidLogout];
    }
}

- (void)invalidateSession {
    self.accessToken = nil;
    self.expirationDate = nil;
    
    NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    NSArray* facebookCookies = [cookies cookiesForURL:
                                [NSURL URLWithString:@"http://login.facebook.com"]];
    
    for (NSHTTPCookie* cookie in facebookCookies) {
        [cookies deleteCookie:cookie];
    }
}

这时候我们发现他只是销毁掉了http://login.facebook.com下的cookie,所以我们的账号有时会无法正常登出,因为他没销毁https://login.facebook.com下的cookie!,所以我们需要在invalidateSession中加入如下代码:

NSArray* facebookCookies1 = [cookies cookiesForURL:
                                [NSURL URLWithString:@"https://login.facebook.com"]];
    
    for (NSHTTPCookie* cookie in facebookCookies1) {
        [cookies deleteCookie:cookie];
    }

简单起见我就加了个1,大家起名不要这样啊!


分享到:
评论

相关推荐

    Facebook SDK iOS

    Facebook SDK for iOS是Facebook为iOS开发者提供的一套集成工具,旨在简化在iOS应用中整合Facebook功能的过程。这个SDK包含了各种框架和资源,使得开发者能够轻松地实现用户登录、分享、通知以及更多的社交特性。 1...

    Facebook PHP SDK 4.0

    Facebook PHP SDK 4.0

    facebook-ios-sdk, 用于将iOS应用程序与Facebook平台集成.zip

    facebook-ios-sdk, 用于将iOS应用程序与Facebook平台集成 用于iOS的这个开源库允许你将Facebook集成到你的iOS应用程序中。了解有关提供示例。文档。将SDK集成到你的应用程序。访问源代码以及在 ...

    Facebook广告sdk需要用到的v4的jar包

    Facebook广告SDK是为Android开发者设计的一个工具包,它允许开发者在他们的应用程序中集成Facebook的广告服务。这个SDK使得展示、管理和追踪广告变得简单,从而帮助开发者通过应用赚取收入或者推广自己的产品。在...

    Unity 2019接入iOS SDK步骤1

    Unity 2019 接入 iOS SDK 步骤 1 Unity 2019 接入 iOS SDK 步骤 1 是 Unity 2019 中的一步骤,用于将 iOS SDK 集成到 Unity 项目中。这个步骤非常重要,因为它可以帮助开发者在 iOS 平台上实现广告展示和其他功能...

    IOS FACEBOOK SDK 开发包 和自带的几个例子

    **iOS Facebook SDK 开发包与示例** Facebook SDK for iOS 是Facebook为开发者提供的工具包,它使得在iOS应用中集成Facebook功能变得简单易行。这个SDK包含了一系列的库和资源,帮助开发者实现Facebook登录、分享、...

    Facebook SDK iOS.zip

    Facebook SDK for iOS是Facebook官方为开发者在iOS平台上集成Facebook功能而设计的一套开发工具包。这个SDK使得开发者能够轻松地将Facebook登录、分享、社交图谱等功能整合到自己的iOS应用中,极大地提升了用户体验...

    使用自定义按钮实现Facebook授权登陆和登出

    2. **安装SDK**:根据你的开发环境(如JavaScript、iOS或Android),选择对应的Facebook SDK并安装。例如,对于Web应用,你可能需要引入Facebook的JavaScript SDK。 3. **创建自定义按钮**:在你的应用界面中,设计...

    facebook android sdk

    Facebook Android SDK是一个专门为Android开发者设计的工具包,它允许...在使用facebook-android-sdk-3.5时,开发者应熟悉其文档,掌握各种API的使用方法,以便充分利用这个SDK的优势,打造出更具吸引力的社交应用。

    Android分享到Facebook的sdk和demo源码

    在Android平台上,与社交网络集成是提升用户体验的重要方式之一,Facebook作为全球领先的社交平台,提供了SDK使得开发者可以方便地在Android应用中实现Facebook分享功能。本文将深入解析"Android分享到Facebook的sdk...

    facebook-objc-sdk-5.0.2.zip

    Facebook Objective-C SDK 5.0.2 是Facebook为iOS开发者提供的一个关键工具,它使得集成Facebook功能到iOS应用变得简单而高效。这个SDK包含了各种库、框架和资源,允许开发者轻松实现用户登录、分享内容、获取用户...

    最新Facebook Unity SDK

    6. **多平台支持**:Facebook Unity SDK支持多平台发布,包括iOS、Android以及桌面平台,使得开发者能够将游戏推向广泛的用户群体。 7. **API调用**:Unity脚本可以直接调用Facebook SDK提供的API,实现各种自定义...

    Facebook广告sdk需要用到的v7-recyclerview的jar包

    在Android移动端开发中,Facebook广告SDK是一个至关重要的组件,它允许开发者将Facebook的广告整合到自己的应用程序中,以此增加收入来源或推广产品。本资源提供的是`android-support-v7-recyclerview.jar`,这是一...

    iPhone 开发Beginning iOS 6 Development Exploring the iOS SDK 源码

    《 Beginning iOS 6 Development Exploring the iOS SDK 源码》是针对iPhone开发的一本深入指南,涵盖了iOS 6...同时,对于iOS SDK的源码探索,可以帮助开发者深入理解底层实现,从而更好地解决实际开发中遇到的问题。

    Laravel开发-laravel-facebook-sdk

    在本文中,我们将深入探讨如何在Laravel框架中使用laravel-facebook-sdk进行Facebook应用程序的集成。Laravel 4的Facebook SDK包装使得在Laravel项目中处理Facebook API变得更加简单和直观。我们将详细介绍安装、...

    instagram-ios-sdk, 面向iOS的Instagram SDK.zip

    instagram-ios-sdk, 面向iOS的Instagram SDK Instagram SDK这个开源iOS库允许你将 Instagram 集成到你的iOS应用中包括 iPhone 。iPad和 iPod touch 。它是由的Facebook iOS 激发的。正在启动register 在

    Laravel开发-laravel-facebook-sdk (非官方)Laravel 的 Facebook 开发者工具包

    **Laravel Facebook SDK** 是一个专门为 Laravel 框架设计的非官方开发工具包,它为开发者提供了一种方便的方式来整合 Facebook 的 Graph API 和其他相关服务。这个工具包旨在简化在 Laravel 应用中实现与 Facebook ...

    开源新版本的SwiftSDKforiOSFaceBook-SDK-Swift.zip

    Facebook Swift SDK支持两个最流行的iOS/macOS包管理系统CocoaPods和Carthage。使用CocoaPods添加该SDK的话,可以在Podfile中添加以下几行信息:pod 'FacebookCore' pod 'FacebookLogin' pod 'FacebookShare'如果...

    facebook-sdk-swift, 在与Facebook平台的Swift 中,集成你的iOS应用程序.zip

    facebook-sdk-swift, 在与Facebook平台的Swift 中,集成你的iOS应用程序 在 Swift ( 测试版) 中的Facebook 将你的应用程序与Facebook集成的快速taylored体验。 包括:登录登录通过他们的Facebook凭据验证用户身份。...

Global site tag (gtag.js) - Google Analytics