5

我正在开发一个需要集成 Facebook 社交功能的应用程序。

在我的应用程序中,有一个按钮可以将用户连接到他的 Facebook 个人资料。当用户按下此按钮时,我只使用 Facebook 网站和用户 Facebook 页面打开一个 web 视图。现在假设我知道他的电子邮件和密码,我想自动连接他,他不必每次都输入他的电子邮件和密码。我试图解决它抛出我的下一个问题,但你可以看到没有成功。

我还尝试使用 CookieSyncManager、CookieManager 和手动处理来持久化 cookie。

我想我可以通过更改发送到 webView 的 url 来解决它,但我不知道是哪个 url。(尝试http://www.facebook.com/connect/connect_to_external_page_widget_loggedin.php然后http://www.facebook.com/plugins/login.php连接用户 Facebook 页面的 url,例如http://www.facebook.com/UserProfile

我真的很感激任何帮助!

谢谢。

4

3 回答 3

4

您不能手动将用户登录到 facebook。这就是 oAuth 的重点,该过程对您的应用程序应该是透明的,当用户完成身份验证后,您的应用程序将只会获得一个 AccessToken。

从那时起,AccessToken 几乎可以永远与您同在。

在以下情况下无效:

  1. 会话到期

    这可以通过添加调用来解决,onResume()假设您使用 Facebook Android SDK 进行 facebook 的身份验证/集成。调用成功后,您的令牌有效期为 60 天。

    public void onResume() {    
        super.onResume();
        facebook.extendAccessTokenIfNeeded(this, null);
    }
    
  2. 用户更改他的密码

  3. 用户取消对您的应用的授权

  4. 用户退出 Facebook

    这三种情况你无能为力!您的令牌将失效,您必须要求用户使用正常流程重新进行身份验证。

按照本教程将 Facebook 集成到您的 Android 应用程序中

于 2012-06-25T08:35:59.063 回答
2

有一种方法可以使用 SDK 身份验证而不是 SSO,如下所述:How to disable Facebook single sign on for android - Facebook-android-sdk
但我认为这只会导致糟糕的用户体验,因为用户需要输入他的电子邮件/密码,这对于大多数移动设备来说并不是一项有趣的任务。

如果用户安装了 facebook 应用程序 (katana)(这意味着使用 SSO),那么您应该能够通过使用意图使用用户配置文件打开它。
我以前从未这样做过,但是从这两个线程:
从其他应用程序启动 facebook 应用程序

从 android 应用程序打开一个 facebook 页面,
看起来您可以执行以下操作:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClassName("com.facebook.katana", "com.facebook.katana.ProfileTabHostActivity");
this.startActivity(intent);
于 2012-06-26T08:17:07.593 回答
0

要连接到 facebook,您首先要学习 Oauth。Oauth 是访问 Facebook 详细信息的一次性验证。密码不需要每次。浏览本文档。

这个文件也对你有用。

于 2012-06-21T08:40:14.360 回答