Facebook状态未更新.错误403,身份验证错误,Android中的SocialAuthException

Nir*_*bhi 5 android facebook socialauth facebook-login

我创建了一个Android应用程序,因为Facebook的授权很好,但是当我点击更新状态按钮时它会显示异常.它返回状态代码403.

代码是:

if (providerName.equalsIgnoreCase("facebook") 
        {
            try 
            {
                adapter.updateStory(
                        "Hello SocialAuth Android" + System.currentTimeMillis(),
                        "AAA",
                        "BBB",
                        "CCC.",
                        "DDD", "EEE",
                        new MessageListener());
            }
            catch (UnsupportedEncodingException e) 
            {               
                e.printStackTrace();
            }
        }
Run Code Online (Sandbox Code Playgroud)

gpr*_*our 2

您收到 403Authentication Error显然意味着您的应用目前无权Facebook 上发布用户的个人资料。

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

  • 你需要一个许可

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

看看它说,

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

  • 如何获取权限

您需要向用户显示一个登录按钮,要求他使用他的 Facebook 帐户登录,并通知用户您的应用程序可以使用他的 Facebook 个人资料执行哪些操作。它会显示权限。在您的情况下,您需要添加一个具有publish_actions权限的登录按钮。一旦用户接受,您的应用程序将被授权发布状态。

完整的教程在这里完成 Facebook 的权限登录过程。

您将需要执行以下操作,

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

所以你可以看到我们要求用户授予你publish_actions权限。user_likes包含或权限不是强制性的user_status。如果不需要它们,您可以将其删除。

  • 登录后下一步

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

  • 如何发帖

现在有很多方法可以在 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();
Run Code Online (Sandbox Code Playgroud)

或者您也可以阅读本教程

笔记

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

更多信息