当我通过我的 Android 应用程序登录到 FB 时,我向 Facebook 对象(在不到 5 分钟前创建)提供了最后一个有效的身份验证密钥和到期日期,期望能够登录。
相反,我收到一个对话框,指出“您已授权此应用程序”。这显然是一种糟糕的用户体验,我想尽我所能让用户在没有这个的情况下登录。
我的登录流程是
- 设置最后一个有效的身份验证密钥和过期时间
- 调用授权()
- 成功后,我将此身份验证密钥发送到服务器,服务器会通过 FB 图形 API 验证该密钥是否有效。
这是我如何称呼它的简化:
Facebook m_facebook;
int ACTIVITY_CODE_FACEBOOK_AUTH = 1;
// auth key and expiration are set from a previous login
m_facebook.setAccessToken(accessToken);
m_facebook.setAccessExpires(expirationTime);
// permissions contains publish_stream, publish_actions, email and does not change.
m_facebook.authorize(m_activity, permissions, ACTIVITY_CODE_FACEBOOK_AUTH, new AppLoginListener());
一种可能的解决方法是首先使用 auth 密钥调用 Graph API 以确保其有效。如果它无效,请按上述方法调用 authorize()。如果它是有效的,就假装我们调用了授权并继续。这感觉就像是一个 hack,我认为我应该能够授权()(并使用 SSO),而无需使用任何姊妹的 Graph API 变通方法。
- 我正在使用 FB SDK rom 2012/4/4。从那时起,似乎没有任何相关的变化。
- 一年前我看到过与此类似的问题,但我还没有看到解决我的问题的具体答案,也没有看到与我已经在做的不同的解决方案。