【问题标题】:Require additional permissions with Facebook Android SDK使用 Facebook Android SDK 需要额外权限
【发布时间】:2014-06-10 19:30:13
【问题描述】:

我正在开发一个允许用户通过 Facebook 或 Google+ 注册的 Android 应用程序。使用 Google+ 我可以检索用户的电子邮件地址,但使用 Facebook 我需要额外的权限才能执行此操作。

我的布局和活动代码中有一个LoginButton,我已将其设置为请求电子邮件权限:

facebookLoginButton.setReadPermissions(Arrays.asList("email"));

只要用户允许就可以了。但如果用户撤销它,我的应用程序将无法按预期工作。它需要电子邮件地址。

如果没有授予权限,我调用

Session.NewPermissionsRequest emailPermissionRequest = new Session.NewPermissionsRequest(this, Arrays.asList("email"));
session.requestNewReadPermissions(emailPermissionRequest);

这会提示用户授予电子邮件权限。它仍然可以被撤销,目前它只是不断询问直到它被授予。

如何设置所需的权限?如果未授予权限,我希望用户无法登录。向权限对话框发送垃圾邮件似乎很愚蠢。

【问题讨论】:

    标签: java android facebook facebook-graph-api facebook-android-sdk


    【解决方案1】:

    一个可能的想法,虽然我不知道是否有先例。

    在您的应用程序中创建一个首选项,例如,"Support Email Login"。当用户点击登录按钮但未授予权限时,将他们引导至您的首选项屏幕:"To support this feature, enable it in preferences"

    然后,在您的首选项屏幕中,当用户选中"Support Email Login" 复选框时,提交权限请求。如果他们拒绝,则表示未设置任何权限并且该框保持未选中状态。如果他们接受,请选中该框,用户可以返回并登录。

    这样,用户可以配置功能/权限,并且他们不会收到权限请求的垃圾邮件;如果他们想启用该功能,他们只需被引导到首选项屏幕。

    【讨论】:

    • 我认为这是最好的方法。我的应用程序是关于通过电子邮件共享邀请的,因此拥有它非常重要。但是,也许我只是添加一个偏好并在后端添加一个验证系统来检查电子邮件是否有效。
    【解决方案2】:

    您需要处理此人不想与您分享他的电子邮件地址的情况。这是完全正确的。

    如果您的应用真的依赖它,您可以创建一个原生表单,在他们拒绝 Facebook 对话框后再次请求电子邮件。或者,您需要调整您的应用以在没有电子邮件地址的情况下运行。

    正如您所提到的,使用对话框发送垃圾邮件将不起作用(并且在审核时可能会注意到)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-12
      • 2011-11-04
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多