0

我们正在实施一个项目,用户在该项目中发布并从服务器获取一些信息。场景是用户可以手动创建帐户/登录(提供电子邮件和密码),也可以使用 SSO 使用 Facebook 凭据。我主要实现 Android 部分,但我的问题很笼统。

  1. 假设我有一个调用 SSO 的按钮,提示用户提供他的凭据。那么为了创建帐户我应该向服务器发送什么?获取用户的 FB 电子邮件并将我收到的 Access Token 设置为密码?每个 FB 帐户的访问令牌是否唯一且永久,这意味着每次我使用相同的 FB 凭据时,我都会获得相同的访问令牌?

  2. 在服务器端是否需要做任何额外的工作?或者服务器是否可以像处理其他用户一样处理使用其 FB 帐户的用户?

每一个澄清都会非常有帮助。先感谢您!

4

2 回答 2

0

令牌有一个过期时间戳,我想最简单的方法是使用数据生成用户帐户 fb 将发送给您并将 fb 令牌和过期日期存储为用户属性。

于 2012-04-18T17:46:48.873 回答
0

你在使用 Facebook Android SDK 吗?如果是这样,手动登录(使用用户电子邮件/密码)和 SSO(通过 Android Facebook 应用程序)非常相似,特别是在令牌处理方面。

例如,如果您查看 SDK 中的示例(位于 sdk\examples\simple\src\com\facebook\android),您将看到代码执行以下操作(在三个文件之间拆分)。

private static final String TOKEN = "access_token";
private static final String EXPIRES = "expires_in";
private static final String KEY = "facebook-session";
Facebook session = new Facebook(APP_ID);
SharedPreferences savedSession = context.getSharedPreferences(KEY, Context.MODE_PRIVATE);
session.setAccessToken(savedSession.getString(TOKEN, null));
session.setAccessExpires(savedSession.getLong(EXPIRES, 0));
if (session.isSessionValid()) {
    session.authorize(mActivity, mPermissions, new LoginDialogListener());
}

因此,您必须在每次成功登录后将会话令牌保存在 SharedPreferences 中(在示例中也是如此),但authorize()手动登录和 SSO 登录的令牌处理和登录 ( ) 是相同的(取决于 activityCode 参数)。

于 2012-04-18T18:43:59.990 回答