如何在Android应用程序中保持与Facebook的连接

时间:2012-06-21 08:33:16

标签: android facebook authentication

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

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

我还尝试使用CookieSyncManager,CookieManager和手动处理来保存Cookie。

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

我真的很感激任何帮助!

感谢。

3 个答案:

答案 0 :(得分: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

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

  5. Follow this tutorial to integrate Facebook inside your Android app

答案 1 :(得分:2)

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

如果用户安装了facebook应用程序(katana)(这意味着使用了SSO),那么您应该只需使用意图就可以使用用户配置文件打开它。
我以前从未这样做过,但是从这两个主题出发: launch facebook app from other app

Open a facebook page from android app
看起来你可以做类似的事情:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClassName("com.facebook.katana", "com.facebook.katana.ProfileTabHostActivity");
this.startActivity(intent);

答案 2 :(得分:0)

要连接到Facebook,您首先要学习Oauth。 Oauth是访问Facebook详细信息的一次性验证。每次都不需要密码。完成此documentation.

document也对您有用。