Facebook:发送 iOS 访问令牌服务器端并使用 App Secret 签名

Posted

技术标签:

【中文标题】Facebook:发送 iOS 访问令牌服务器端并使用 App Secret 签名【英文标题】:Facebook: sending an iOS access token server side and signing with App Secret 【发布时间】:2011-09-14 08:32:52 【问题描述】:

我正在编写一个广泛使用 Facebook 的 iPhone 应用程序。现在,我正在使用 iPhone Facebook SDK 获取访问令牌。这将返回一个标准访问令牌。

我在服务器端发送这个令牌并成功地使用它进行许多查询。但是,有些查询需要使用 Application Secret 签名的访问令牌,由于安全漏洞,iPhone 应用程序 sdk 无法在客户端执行此操作(特别是我正在尝试使用仪表板方法)。

所以我的问题是:有什么方法可以让 Facebook 升级这个 iPhone 访问令牌服务器端以包含签名的秘密?还是我必须从一开始就验证服务器端才能做到这一点?

文档说,使用“服务器端流程”方法,一旦用户允许您的应用,您将获得由服务器生成的代码,您必须将其与您的应用机密一起发回以获取您的访问令牌。 iPhone SDK 使用'Client-side flow' 方式,似乎跳过了这一步,所以不知道如何获取这段代码。所以我想问题归结为,是否可以将通过“客户端流程”方法获得的令牌升级为可以完全在服务器端使用的令牌。

【问题讨论】:

这不是一个答案,而是一种解决方法——我通过创建自己的登录来解决这个问题,该登录通过我的服务器路由的 UIWebView,它处理身份验证。这样我就可以安全地使用我的应用程序密码来获取我需要的凭据。 嗨,Shaun,我刚开始从事一个需要我在 iphone 应用程序上进行服务器端登录的项目。我想知道,如果您使用 UIWebView 呈现服务器端登录,您如何知道登录成功或失败?任何链接或提示?谢谢! 【参考方案1】:

答案是否定的。

用户令牌和应用令牌不同,不能相互转换。

因为您有一个客户端应用程序,所以我不建议您嵌入您的应用程序机密(正如您所指出的那样)。

对于您的应用,我建议您在您控制的服务器上创建一个网页,该网页获取并使用应用令牌来进行您想要的调用。

【讨论】:

以上是关于Facebook:发送 iOS 访问令牌服务器端并使用 App Secret 签名的主要内容,如果未能解决你的问题,请参考以下文章

如何验证 Facebook 访问令牌?

获取 xmpp_login 访问令牌在 Facebook iOS SDK 中不起作用

当您在 iOS 应用程序和服务器中都使用令牌时如何处理 Facebook 弃用的离线访问权限

仅使用 Facebook 令牌在 iOS 上发送 Firebase 邀请登录 Firebase 身份验证

iOS:通过自动登录获取 Facebook 访问令牌

在 Python 中使用访问令牌通过 XMPP 发送 Facebook 消息