Facebook OAuth api 登录问题

2023-12-31

我对用于登录的 Facebook API 感到困惑。我在网上找不到任何有用的信息。

我的 FB 会话委托方法没有被调用,并且访问令牌和过期日期值没有被设置,所以我认为我从未登录过。

我恢复到一个非常简单的应用程序,只有两个按钮(登录、注销)和一个用于查看状态信息的标签。

以下是视图控制器的代码,所有处理都在其中进行:

// 
#import <UIKit/UIKit.h>
#import "Facebook.h"

@interface facebook_login_testViewController : UIViewController <FBSessionDelegate>{

    UIButton *loginButton;
    UIButton *logoutButton;
    UILabel *info;

    Facebook *facebook;

}

@property (nonatomic, retain) Facebook *facebook;

- (void) loggingIn;
- (void) loggingOut;

@end

and

#import "facebook_login_testViewController.h"

@implementation facebook_login_testViewController
@synthesize facebook;

- (void)dealloc
{
    [super dealloc];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];

    loginButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [loginButton setTitle: @"Log In" forState:UIControlStateNormal];
    [loginButton addTarget:self action:@selector(loggingIn) forControlEvents:UIControlEventTouchUpInside];
    loginButton.frame = CGRectMake(200, 200, 200, 50);

    logoutButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [logoutButton setTitle: @"Log Out" forState:UIControlStateNormal];
    [logoutButton addTarget:self action:@selector(loggingOut) forControlEvents:UIControlEventTouchUpInside];
    logoutButton.frame = CGRectMake(200, 300, 200, 50);

    info = [[UILabel alloc] initWithFrame:CGRectMake(200, 400, 400, 600)];
    info.numberOfLines = 0;

    [self.view addSubview:loginButton];
    [self.view addSubview:logoutButton];
    [self.view addSubview:info];

    info.text = @"Waiting to log in...\n\nPress the login button.";

    facebook = [[Facebook alloc] initWithAppId:@"159...........5" andDelegate:self];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
        && [defaults objectForKey:@"FBExpirationDateKey"]) {
        facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
        facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
    }

}


- (void)viewDidUnload
{
    [super viewDidUnload];        
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return YES;
}

- (void) loggingIn{
    if (![facebook isSessionValid]) {
        [facebook authorize:nil];
    }
}

- (void) loggingOut{
    info.text = [NSString stringWithFormat:@"\naccess token: %@\nexpiration date: %@\nfacebood description:%@\n",facebook.accessToken, facebook.expirationDate, facebook];
    [facebook logout:self];

}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {

    return [facebook handleOpenURL:url]; 
}

- (void)fbDidLogin {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
    [defaults synchronize];

}

@end

.plist 文件设置如下

这看起来确实太简单了,不会出错。当我点击登录按钮时,我可以追踪authorize:permission, 进而authorize:permissions localAppId:localAppId,据我所知,我没有看到任何看起来会导致isSessionValid变得真实。

我等待,然后按下注销按钮,然后查看一些 Facebook 参数,以防需要发生异步情况,但它们仍然为空。

有人能看到我缺少什么吗?


网上很少有示例说明其工作原理,但 Facebook SDK 附带了一个演示应用程序 (DemoApp),一旦您插入 appId,该应用程序就可以工作。 (如果您不插入 appId 值,它将在检查该值时被终止。)

授权过程中发生的事情是[facebook授权:权限]叫做。 (权限不应为零)

这会导致调用[自我授权:权限localAppId:nil],然后调用[自我授权WithFBAppAuth:是 safariAuth:是]。在该方法中,可以尝试三种连接 Facebook 进行授权的方式。

在每个异步方法中,应用程序委托是处理结果回调作为 to 的一部分的委托。应用程序:(UIApplication *)应用程序句柄OpenURL:(NSURL *)url。如果其他在线教程中提到了这一点,则很容易错过,因为从我所见,它们通常在应用程序委托中完成所有处理。就我而言,我在主视图控制器中进行了主要处理。

就我而言,解决方法是移动应用程序:(UIApplication *)应用程序句柄OpenURL:(NSURL *)url方法到应用程序委托并将其指向 facebook 对象,如下所示:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
  return [[controller facebook] handleOpenURL:url];
}

之后,调用其他 facebook 委托方法(fbDidLogin、fbDidLogout),我收到了 accessToken 和expirationDate。所以看起来这现在正在发挥作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Facebook OAuth api 登录问题 的相关文章

  • Facebook API 页面提要未将信息发送到我的 webhook?

    我是我的测试应用程序和测试页面的管理员 现在我正在做一个通过 webhook 实时获取页面提要的功能 仅在开发模式下 当我单击应用程序仪表板上的测试按钮时 它已发送到我的网络钩子 但是当我评论或喜欢 该帖子时 即使我订阅了 feed web
  • Facebook - “IN”子句中参数的最大数量?

    In Facebook query language FQL 您可以指定一个IN子句 例如 SELECT uid1 uid2 FROM friend WHERE uid1 IN 1000 1001 1002 有谁知道你可以传入的参数的最大数
  • 无法获取 Facebook 传入请求

    我正在尝试在我的 Facebook android 游戏应用程序中实现发送数据并接受该数据 我正在关注https developers facebook com docs android send requests notification
  • FBFriendPickerViewController 未显示所有好友

    我正在使用 FBFriendPickerViewController 在我的 iOS 应用程序中显示要邀请的朋友列表 它仅显示安装了该应用程序的好友列表 为什么是这样 我还在我的应用程序中直接与 Facebook sdk 交互 以使用 Gr
  • Facebook iOS SDK:登录 Facebook 时无需总是询问应用程序的权限

    我在我的应用程序中使用 Facebook iOS SDK 我有两个类似的问题 有没有办法知道当前是否有用户登录 我现在使用的是在成功登录时存储访问令牌和到期日期 并在应用程序启动时加载它们 我的问题是 如果会话无效 我可以为用户提供登录选项
  • Facebook“赞”按钮回调帮助

    我正在使用此代码进行类似 facebook 的回调 问题是 如果我调用 php 脚本 例如 有人可以看到我的 javascript 并运行此页面 甚至可以向其发送垃圾邮件或在没有先点赞的情况下使用它 我的想法是 我想为每个喜欢该页面的用户提
  • 黑莓 Facebook SDK jar 文件

    大家好 我在使用 Facebook Blackberry SDK 以及如何在我的项目中使用它时遇到问题 我有一个使用 SourceForge 上提供的源文件制作的项目 我在我正在开发的项目中引用了这个项目 非常适合编程 但是当我想在模拟器上
  • 使用 Facebook API 和 Objective C 来查找随机 Facebook 用户图像

    我正在构建一个返回随机 Facebook 个人资料图片的应用程序 到目前为止 我有下面的代码生成一个随机个人资料 ID 有时会返回真实的个人资料 但有时不会 只显示通用的蓝色 Facebook 面孔 当我在实际网站图形 API 上使用给定的
  • 使用 Facebook 进行身份验证的网站的 REST API

    我们有一个网站 其中only登录网站并进行身份验证的方式是使用 Facebook 这不是我的选择 当您第一次登录 Facebook 时 系统会自动为您创建一个帐户 现在 我们希望为我们的网站创建一个 iPhone 应用程序 并为其他人使用我
  • 使用 django-social-auth 登录后获取 Facebook 数据

    我们已经建立了一个应用程序 使用django social auth使用 Facebook 验证用户身份的扩展 身份验证工作正常 但我们不清楚如何从 Facebook 获取有用信息 好友列表 点赞等 看起来django facebook处理
  • 如何使用 C# SDK 更新 Facebook 访问令牌

    我正在使用 Facebook C SDK 来获取尽可能多的数据 例如帖子 评论 用户信息 尽可能来自 Facebook 但我的程序在我的访问令牌在一段时间后过期后停止 我必须重新启动程序 我从以下位置获取了访问令牌Facebook 开发者工
  • 脸书状态更新

    我在 Facebook 上更新状态时遇到问题 我正在使用 Facebook sdk 问题是我的状态正在发布但不显示文本 这是我的代码 gt 公共类 NetRockersUpdate 扩展 AsyncTask Override protect
  • 如何在 Android 上为 Facebook 的应用程序制作新菜单? [复制]

    这个问题在这里已经有答案了 可能的重复 Android facebook 风格幻灯片 https stackoverflow com questions 8657894 android facebook style slide 最近 Fac
  • 如何使用 graph api 获取粉丝页面的点赞数?

    如何使用 graph api 获取粉丝页面的点赞数 早些时候它在这里 https graph facebook com FANPAGE ID access token ACCESS TOKEN https graph facebook co
  • 使用 HybridAuth 登录 Facebook 显示错误 您无法直接访问此页面

    我正在尝试为我的网站编写一个插件 以使用 HybridAuth 与 facebook 连接 类 我刚刚尝试了以下代码 function authenticatewith provider ini set display errors on
  • 禁用 Google+ 社交登录的自动身份验证

    我正在寻找一种方法来避免用户在刷新页面时在我的网络应用程序中自动进行身份验证 例如 用户使用他的 Google 帐户连接到我的网络应用程序并使用该应用程序一段时间 稍后 当他回来时 我希望应用程序要求他再次单击登录按钮 而不是自动将他识别为
  • [json4s]:提取不同对象的数组

    我正在使用 facebook graph API 响应看起来与此类似 data id 311620272349920 311718615673419 from id 1456046457993048 name Richard Ettinso
  • Oauth 2:access_token 是用户的唯一密钥吗?

    一个用户之后与 Facebook 连接 https developers facebook com docs authentication Facebook 回应access token 我可以假设这个吗access token将始终保持不
  • 具有隐式授权的 OAuth 应用程序中的客户端模拟

    来自 OAuth 草案 隐式section https datatracker ietf org doc html draft ietf oauth v2 31 section 1 3 2 在隐式授权流程期间发出访问令牌时 授权服务器不对客
  • 通过 Facebook 图 api 点赞帖子

    你好 我对 facebook PHP SDK 没有什么问题 我想通过 facebook PHP SDK 点赞帖子或其他内容 我正在执行此代码 我认为它应该是正确的 但显然它不起作用 给定的错误代码是的 PHP SDK不知道这种POST请求

随机推荐

  • 测试元组是否具有所有不同的元素

    我正在寻找一种方法来测试一个元组是否具有所有不同的元素 也就是说 它是一个集合 最终得到了这个快速而肮脏的解决方案 def distinct tup n 0 for t in tup for k in tup print t k n if
  • 如何在 Angular 2 中监听点击并按住的声音?

    在这个链接中 https stackoverflow com questions 25180332 how can i listen for a click and hold in angularjs 你可以在 AngularJS 中找到一
  • 在 bash 中如何检查文本文件是否以制表符作为分隔符?

    所以我有一个文本文件 它可能有一个制表符作为其字段分隔符 分隔符 或者可能有一个空格作为字段分隔符 我想检查该文本文件是否已制成表格 否则我将对该文件执行其他操作 我正在使用 bash 脚本 所以我对任何纯 bash sed awk gre
  • 使用 webkitDirectory 和 Java Servlet 上传文件夹/子目录中的文件

    我正在尝试使用 webkitdirectory 和 java 后端来实现文件上传功能 步骤1 使用 webkitdirectory 设计 HTML 表单
  • 新服务器的 SQL Server tempdb 优化技巧?

    我正在计划全新安装SQL Server 2005在我必须订购的新机器上 我知道临时数据库调优对整体来说非常重要表现SQL Server 实例的 我读到 最佳实践是创建与 CPU 或核心 一样多的 tempdb 文件 那是对的吗 还有其他推荐
  • 请求发布时出现 Python 错误:'连接中止,超时('写入操作超时')

    我正在使用 requests post 发送一些数据 现在我已经设置了超时值requests post类似的东西60 其他类似的问题与特定的应用程序相关 所以我想将其作为通用的 python 错误来问 这是我得到的错误 failed to
  • 如何从回调函数中中断Word2vec训练?

    我正在使用 gensim word2vec 训练 Skipgram 模型 我想在达到基于不同数据集的特定准确性测试的参数中传递的时期数之前退出训练 以避免模型过度拟合 gensim 有没有办法从回调函数中断 word2vec 的训练 如果事
  • 无符号算术和整数溢出

    我试图理解算术溢出 假设我有以下内容 unsigned long long x unsigned int y z x y z y z 可能导致整数溢出 将其中一个操作数转换为 unsigned long long 是否可以缓解此问题 64
  • 使用 jquery 在 div 内添加、调整大小、位置、颜色更改文本

    我期待创建一种非常简单的方法 允许用户在文本中书写 调整大小 位置或更改文本的颜色 div 我对 jQuery 了解一点 My HTML div class canvas div class u test class Testing div
  • Clojure - 将列表转换为 Java 数组

    除了首先将 Clojure 列表转换为向量并使用之外 是否有任何惯用的方法将 Clojure 列表转换为 Java 数组进入数组 意思是 除了 into array vec my list 因为我不想要额外的开销 你的问题似乎是基于一个错误
  • 基于索引列创建新列

    我有一个包含 n 个观察值的数据集和一个包含观察值索引的列 例如 col1 col2 col3 ID 12 0 4 1 6 5 3 1 5 21 42 2 并想根据我的索引创建一个新列 例如 col1 col2 col3 ID col ne
  • 如何从 Android 的 xml 字符串资源中检索 2D 数组?

    假设我在 android 资源中存储了一个二维数组 如下所示 如何将它们放入像 Arraylist 这样的 java 集合中
  • Google App Engine 上的 Spring security openid

    有人知道如何让 Spring security openid 在 Google App Engine 上工作吗 我试过了 但是有一个java security AccessControlException access denied err
  • 在 spacy 的帮助下合并几乎相似的行

    如果某些行几乎相似 我想合并它们 可以使用 spaCy 检查相似性 df string yellow color yellow color looks like yellow color bright red color okay red
  • 将数据传递到 django 表单

    class Test forms Form def set choices self choices self choices choices def get choices self return self choices options
  • 查看 TeamCity 服务消息

    我正在对 TeamCity 9 0 4 中的构建步骤进行故障排除 问题似乎出在服务消息输出中 构建完成后可以查看这些吗 它们不包含在构建日志中 关于服务消息的文档简单地说In order to be processed by TeamCit
  • 使用 jQuery 获取锚元素的绝对 URL

    给定一个锚元素 类似于 a first 如何获取锚点指向的绝对URL 如果您使用的是 jQuery 1 6 您可以使用 prop a first prop href 1 6之前 您可以访问href直接在 DOM 元素上使用属性 a firs
  • 访问结果集行中的值,其中该值来自 MySQL 函数调用

    因此 由于普通的 PHP 查询返回一个数组 所以从未向我解释过当列值是 MySQL 函数调用的返回值时 如何实际从查询的结果集数组中提取值 countThemes Singlequery SELECT COUNT 1 FROM items
  • 如何正确增加 mongoDB 中的多个日期?

    我不是一个特别擅长 Javascript 的人 我在尝试更新很多内容时遇到了一些麻烦DateMongo 中的对象 看起来 inc尚未实施Date objects https jira mongodb org browse SERVER 31
  • Facebook OAuth api 登录问题

    我对用于登录的 Facebook API 感到困惑 我在网上找不到任何有用的信息 我的 FB 会话委托方法没有被调用 并且访问令牌和过期日期值没有被设置 所以我认为我从未登录过 我恢复到一个非常简单的应用程序 只有两个按钮 登录 注销 和一