防止 Facebook Android SDK 将密码显示为纯文本

Posted

技术标签:

【中文标题】防止 Facebook Android SDK 将密码显示为纯文本【英文标题】:Preventing Facebook Android SDK from displaying password as plain text 【发布时间】:2012-12-31 17:23:53 【问题描述】:

我有一个使用 Facebook android SDK 的 Android 应用,将公开部署。

我的问题是,每当用户使用错误密码登录时,Facebook SDK 会将密码字段更改为纯文本,这在公共环境中显然是不可接受的。

有没有办法抑制这种行为?

【问题讨论】:

对话框登录工作流程(作为 web 视图)完全由服务器端控制,据我所知,没有客户端标志可以禁用它。 @Ron 在 Android 3.2 上对我来说没有这样的问题。我正在使用 Facebook Android SDK 3.0。我想我在 ios 上遇到了这样的问题,但我没有使用最新版本的 Facebook iOS SDK。 如果 Facebook 希望该字段在发生错误后不被遮蔽,这似乎是 Facebook 的选择,如果它是 Facebook 的字段而不是您的字段。 扩展有问题的类并提供您自己的 Web 视图,该视图添加 javascript 以将纯文本密码字段更改为隐藏密码,并确保您的被调用。不过,这可能与 tos 相悖。 有没有没有登录按钮的加密密码? 【参考方案1】:

Facebook SDK 登录对话框验证流程由 facebook 的服务器端管理。而且由于我们对登录验证没有任何控制权。

Facebook SDK 提供了一个 LoginButton 视图,它是 Button 的自定义视图实现。您可以在您的应用程序中使用此按钮来实现 Facebook 登录。 LoginButton 类维护会话状态,这允许它根据用户的身份验证状态在按钮中显示正确的文本。将 LoginButton 添加到 Activity 的布局是实现 Facebook 登录的快速方法。

除了登录按钮之外,您可能还想根据用户是否经过身份验证来控制其他用户界面 (UI) 组件。 Facebook SDK 包括两个类:UiLifecycleHelperSession.StatusCallback,用于处理管理会话状态更改的大部分复杂性。显示已验证功能的活动或片段可以创建UiLifecycleHelper 类的实例并传入Session.StatusCallback 侦听器,该侦听器会收到任何会话状态更改的通知。您的活动或片段必须调用UiLifecycleHelper 反映活动或片段生命周期方法的公共方法。这些方法用于创建、打开、保存和恢复活动的 Facebook 会话。 Session.StatusCallback 监听器实现可以覆盖 call() 方法来响应会话状态的变化并相应地更新 UI。

所以LoginButton 控制登录按钮功能,您可以添加自定义代码触发call() 方法来控制其他UI 组件。

【讨论】:

我没有尝试过你的答案,但它确实让我知道了如何解决我的问题。 很高兴它对您有所帮助。谢谢亲爱的:) 有没有没有登录按钮的加密密码?【参考方案2】:

不,登录对话框是从 Facebook 端呈现的,移动登录对话框在第二次尝试时始终以纯文本形式显示密码 - 重新加载时应该在对话框中显示该效果的注释

【讨论】:

以上是关于防止 Facebook Android SDK 将密码显示为纯文本的主要内容,如果未能解决你的问题,请参考以下文章

使用 Facebook SDK 3.1 防止 iOS 本机登录

在 Facebook SDK Android 上找不到文件“com.facebook.android.facebook”

Android Facebook sdk 覆盖登录按钮

将 Facebook SDK 安装到 Android Studio

Android - facebook sdk 中没有这样的字段错误

Facebook 的 Android ProGuard 设置