2

我正在为 Android 开发,目前使用 facebook-android-sdk 进行身份验证。据我所知,该代码中没有使用应用程序密码,这很棒。

现在 Facebook 将删除 offline_access 权限,我需要扩展访问令牌。不幸的是,sdk 的 extendAccessToken 方法不是独立的,需要安装官方的 Facebook 应用程序,这对我来说是不可接受的。

所以我决定直接实现extendAccessToken(类似于iphone sdk实现)。问题是扩展访问令牌的 HTTP 请求需要 client_secret 字段,这意味着我需要将应用程序密码放入代码本身。对于可以轻松进行逆向工程的 Android/Java 应用程序来说,这根本不安全。

有没有其他选择?

4

2 回答 2

0

为什么不在您自己的服务器上托管执行此操作的代码,并让客户端通过调用您的服务器来扩展令牌?

于 2012-03-05T10:33:18.720 回答
0

所以这是我迄今为止在生成/扩展令牌方面发现的关于 Android/iOS sdks 的内容。

我找到了 2 种使用 SDK 生成令牌客户端的方法和 3 种扩展令牌的方法。

生成:

1) 脸书应用程序。生成 SSO 令牌

2) 网络浏览器(iOS)/网络对话框(Android/BB)。在 iOS 上生成 SSO 令牌,在 Android/BB 上生成非 SSO 令牌

这些代币都是长期代币。

扩展:

1) iOS/Android 应用程序。在 Android 情况下,仅当用户登录应用程序时,否则对绑定服务的调用永远不会返回任何内容,甚至不会返回错误。尚未针对该场景测试 iOS。

2) auth.extendSSOAccessToken。这是旧 API 的端点,据我所知,如果官方应用程序不存在,iOS SDK 仍然使用它。现在,如果您在不是通过 SSO(Android 弹出对话框)生成的令牌上使用此端点,您会收到错误代码 10,并带有一条消息,告诉您令牌不是通过 SSO 生成的。这可能会导致您怀疑只要您的令牌是通过 SSO 生成的,它就可以工作。您的怀疑是错误的,它会为您提供错误代码 100,并带有“未提供 Facebook 应用程序的访问令牌”的消息。据我所知,这使得这种方法在 Android 上完全没用。

3) oauth/access_token。这是 FB 告诉我们在他们的路线图中使用的端点。当然,这种方法a)通过apk反编译/解包公开您的APP_SECRET(FB强烈建议不要这样做),b)仅适用于将短期令牌扩展为长期令牌。因此,如果您从一个长期令牌开始,这是在 Android/iOS 上返回的默认值,您需要先生成一个短期令牌,然后使用此方法在客户端(不安全)或服务器端(不为了所有人)。如何从长期代币生成短期代币?希望我知道=(。

到目前为止,还没有找到任何可以在任何地方完成此任务的想法。如果有人知道,请分享!

这至少会给拥有服务器的人提供一种扩展长期令牌的安全方法。

于 2012-09-17T22:59:10.570 回答