基于登录的Facebook帐户自动生成密码

时间:2012-05-04 06:35:44

标签: iphone facebook xmpp

我正在开发一个需要用户登录Facebook的iPhone应用程序。然而,这只是为了检索用户的朋友列表,之后我希望通过我自己的XMPP服务器继续通信,我想自动创建帐户到这个服务器。

为此我需要一个用户名,这是非常直接的:facebook用户ID,但是我还需要根据显示用户已登录Facebook的某种私钥创建密码。对于在任何时间内登录的任何设备,此密钥应该相同,我一直在查看Facebook API,但只能找到访问令牌,我认为当用户从其他设备登录时,该令牌会有所不同。 / p>

我的问题:Facebook API中是否有可用的这些要求?任何有关替代解决方案的建议也会受到欢迎。

谢谢!

编辑:

示例:

  1. 用户首次在iPhone上使用该应用程序,使用facebook登录,应用程序会自动在我的XMPP服务器上创建一个帐户,其中用户ID等于facebook ID,密码是显示用户的内容已经登录到他的Facebook帐户。
  2. 现在用户在他的iPad上使用该应用程序,再次登录他的Facebook帐户,但是我的XMPP服务器上已经有一个帐户,必须从Facebook收到的数据生成相同的密码。
  3. 第2步是给我带来问题的部分,我需要的数据显示用户已经登录到他的帐户,并且无论何时何地登录都是相同的,只是为了使相同的密码可以每次产生。我相信如果我为此使用access_token,那么如果用户例如没有登录60天并再次开始使用该应用程序,或者甚至当他登录到其他设备时,这将会改变?

    澄清一下:Facebook提供的XMPP服务器不符合我的需求,我需要能够发送除聊天消息之外的其他内容,还需要能够存储消息,以便登录的新设备可以同步到一个合适的国家。

1 个答案:

答案 0 :(得分:0)

对于Facebook XMPP,我建议您使用名为X-FACEBOOK-PLATFORM的自定义SASL机制。基本上,用户必须首先登录您的应用程序并授予xmpp_login扩展权限。遵循客户端流程,为具有xmpp_login扩展权限的用户获取有效的access_token。

使用以下参数在TLS上发送base64编码的字符串:

string method: Should be the same as the method specified by the server.
string api_key: The application key associated with the calling application.
string access_token: The access_token obtained in the above step.
float call_id: The request's sequence number.
string v: This must be set to 1.0 to use this version of the API.
string format: Optional - Ignored.
string cnonce: Optional - Client-selected nonce. Ignored.
string nonce: Should be the same as the nonce specified by the server.

您的appID(api_key)可以在多个环境中使用,并且您将能够获取每个用户设备的用户访问令牌。

以下是聊天API文档:https://developers.facebook.com/docs/chat/