【问题标题】:Not able to post to Facebook using custom-ui project of socialauth-android project无法使用 socialauth-android 项目的 custom-ui 项目发布到 Facebook
【发布时间】:2016-01-31 16:10:18
【问题描述】:

我无法使用 socialauth-androidcustom-ui 项目发布 Facebook。

这是错误日志。

10-31 13:18:05.124: D/SocialAuthError(21880): org.brickred.socialauth.exception.SocialAuthException: org.brickred.socialauth.exception.SocialAuthException: Status not updated. Return Status code :403
10-31 13:18:05.124: W/System.err(21880): org.brickred.socialauth.android.SocialAuthError: Message Not Posted
10-31 13:18:05.124: W/System.err(21880):    at org.brickred.socialauth.android.SocialAuthAdapter$6.run(SocialAuthAdapter.java:868)
10-31 13:18:05.124: W/System.err(21880):    at java.lang.Thread.run(Thread.java:818)

我无法找到问题所在。我正在使用从 Github 源获得的相同 API 密钥。

【问题讨论】:

  • 如果你没有共享任何代码,如何重现错误?

标签: facebook socialauth


【解决方案1】:

您收到 403 Authentication Error,这显然意味着您的应用目前未被授权在用户的 Facebook 个人资料上发布。

您尝试使用 Facebook API 的方式存在一些问题。我建议您使用最新的 Android 版 Facebook SDK,因为某些较旧的方法可能已被弃用。让我告诉您正确执行此操作的方法。 (我最近实现了最新的 Facebook SDK)

  • 您需要权限

您需要一些特定权限才能使用 Facebook SDK 执行某些特定操作。例如,如果您希望您的应用在用户的个人资料上发布状态,您需要publish_actions 权限。

Check Out 它说,

For example, the publish_actions permission lets you post to a person's Facebook Timeline.

  • 如何获得权限

您需要向用户显示一个登录按钮,该按钮将要求他使用他的 Facebook 帐户登录,并通知用户您的应用程序可能会对他的 Facebook 个人资料做什么。它将显示权限。在您的情况下,您需要添加一个具有publish_actions 权限的登录按钮。一旦用户接受它,您的应用就会授权发布状态。

Complete Tutorial is here 使用权限进行 Facebook 的登录过程。

您需要执行以下操作,

LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
authButton.setFragment(this);
authButton.setReadPermissions(Arrays.asList("user_likes", "user_status", "publish_actions"));
return view;

因此您可以看到我们要求用户授予您 publish_actions 权限。包含user_likesuser_status 权限不是强制性的。如果不需要,可以删除它们。

  • 登录后的下一步操作

用户登录后,您会在 Facebook 的session 中获得一个authentication token。所以现在您可以使用它在用户的个人资料上发布。

  • 如何发帖

现在有很多方法可以在 Facebook 上发布帖子或状态。我想讨论的第一个是使用Graph API

这里有一些代码,你可以用来发布到 facebook。

Session session = Session.getActiveSession();

new Request(
    session,
    "/me/feed",
    null,
    HttpMethod.POST,
        new Request.Callback() {
            public void onCompleted(Response response) {

            }
        }
).executeAsync();

注意

您还需要使用 facebook 创建开发者帐户并将您的应用添加到其仪表板,生成 app_id 并在您的 AndroidManifest.xml 文件中提及相同的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2019-03-31
    • 2018-06-14
    • 2020-08-01
    相关资源
    最近更新 更多