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

时间:2014-02-18 11:22:36

标签: android facebook facebook-login socialauth

我创建了一个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();
            }
        }

3 个答案:

答案 0 :(得分:4)

浏览SocialAuth Wiki我发现当前的错误与您的描述相符:

https://code.google.com/p/socialauth-android/issues/detail?id=175

因此,您并不孤单。您可以在问题跟踪器中提供更多信息,以帮助并指出问题的严重性。

但除此之外,我担心你只需要等待 - 或者考虑自己修复其他开源库中的错误。


您还可以检查原始Java实现或.Net端口是否遇到同样的问题;如果不是这些库中的代码可能有助于找到解决方案。

答案 1 :(得分:2)

您将获得403 Authentication Error,这显然意味着您的应用目前尚未授权在用户的Facebook个人资料中发布。

您尝试使用Facebook API的方式存在一些问题。我建议您使用最新的Facebook SDK for Android,因为一些较旧的方法可能会被弃用。让我告诉你采取正确方法的方法。 (我最近实施了最新的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权限不是强制性的。如果您不需要,可以将其删除。

  • 接下来登录后的内容

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

  • 如何发布

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

Check this link for more details

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

Session session = Session.getActiveSession();

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

            }
        }
).executeAsync();

或者您也可以通过this tutorial

注意

您还需要在Facebook上创建开发者帐户,并将您的应用添加到其信息中心,生成app_id并在AndroidManifest.xml文件中提及相同内容。

More Info

答案 2 :(得分:0)

将socialauth-4.4.jar替换为以下jar文件url链接。并检查Facebook共享是否有效。

下载jar文件

https://socialauth-android.googlecode.com/issues/attachment?aid=1880009000&name=test_social.jar&token=ABZ6GAeEabJhhI5PtmSHn7pA8pcsk6s_Zw%3A1415373843808