【问题标题】:Store the session of Facebook from WebView从 WebView 存储 Facebook 的会话
【发布时间】:2010-10-28 19:46:58
【问题描述】:

我试图避免当用户从我的 web 视图连接到 Facebook 时,下次他这样做时,不需要输入电子邮件和密码。我用这句话从“facebook.com”域获取cookie:

String cookie = CookieManager.getInstance().getCookie("facebook.com");

并将其存储在 SQLite 数据库中。当用户尝试再次连接到 Facebook 时,我在删除所有其他 cookie 后使用这句话:

CookieManager.getInstance().setCookie("facebook.com", user_acc.getSessionCookie());

但不起作用。我认为那个 cookie 无效,因为用户必须再次输入他的用户名和密码,登录后,我得到一个与我存储的不同的 cookie。

我做错了什么?还有其他方法可以实现吗?

提前谢谢你。

【问题讨论】:

    标签: java android session cookies webview


    【解决方案1】:

    我认为您不能通过 cookie 执行此操作,因为此 cookie 仅对该会话有效,并且一旦用户注销该 cookie 过期,尽管您将该 cookie 存储在您的 facebook 数据库中,该 cookie 从未创建,这就是原因它再次询问用户名密码。我认为最好的方法是点击记住密码

    【讨论】:

    • facebook设置了十几个cookie,只有一个是会话cookie。
    • 那么,有没有办法避免用户每次使用我的应用程序时都必须登录?如果我不删除 cookie,他只需要第一次登录,所以我认为该信息被存储为 cookie,因为如果我删除它们,它就不会发生。
    • 但是你将如何防止你的用户没有点击注销?因为一旦用户单击注销,会话就会变得无效,因此您无法通过在数据库中存储 cookie 来实现您想要的,请参阅此帖子以了解会话劫持atenlabs.com/blog/how-to-steal-facebook-authentication-cookies
    • 我正在编写一个 Facebook 客户端,并且 webview 仅用于从 Facebook 检索访问令牌,之后,我在客户端中实现的注销方法不会删除 cookie。尽管用户可以注销(或删除 cookie),但这并不重要,当他想再次登录时,Facebook 的登录页面就会出现。我想存储 cookie 以使第二次和下一次登录时间更快。
    【解决方案2】:

    我认为这将解决您今天宣布的问题检查这是否可以工作http://techcrunch.com/2010/11/03/facebook-single-sign-on/

    【讨论】:

    • 谢谢你,但读到它我注意到要使用它,用户必须安装官方应用程序,但是当我正在编写一个替代客户端时,说起来有点奇怪用户说他必须安装官方的Facebook客户端才能使用我的,你不这么认为吗?
    【解决方案3】:

    嗯,我找到了解决方案。如果我得到所有 cookie 都不起作用,但如果只得到 m_user cookie 一切正常。

    感谢帕里的回答。

    问候。

    【讨论】:

    • 您可能误诊了解决方案。我遇到了您的帖子,正在寻找完全相同的东西,并且我能够在不使用任何 m_user 或其他特定于 facebook 的 cookie 的情况下解决这个问题,只需放置 developer.android.com/reference/android/webkit/… 中的类概述中描述的 4 个调用
    • @uTubeFan 是的,你是对的。我现在已经尝试过了,它可以使用 facebook.com cookie。我不知道为什么这以前不起作用,但现在它起作用了。谢谢!
    猜你喜欢
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2019-03-31
    • 1970-01-01
    相关资源
    最近更新 更多