【问题标题】:Facebook status not updated. Error 403, authentication error, SocialAuthException in AndroidFacebook 状态未更新。错误 403,身份验证错误,Android 中的 SocialAuthException
【发布时间】:2014-02-18 11:22:35
【问题描述】:

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

【问题讨论】:

  • 那么代码是403还是400?
  • 它的 403。查看我更新的问题
  • 看看这个:stackoverflow.com/questions/2925620/…你有没有试过搜索任何东西? Stackoverflow,谷歌?
  • 是的,我喜欢codeproject.com/Tips/457153/…,它适用于 twitter、LinkedIn、Yahoo、Google+ 和所有其他网站,但不适用于 Facebook
  • 您好,请下载最新的sdk。现在 socialauth android 使用原生流。

标签: android facebook facebook-login socialauth


【解决方案1】:

查看 SocialAuth Wiki,我发现了一个与您的描述相匹配的当前错误:

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

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

但除此之外,恐怕您只需要等待 - 或者考虑自行修复其他开源库中的错误。


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

【讨论】:

  • 奇怪的是,他们的样本有效。但是,一旦我用自己的应用程序密钥替换他们的应用程序密钥,一切都会中断并出现此错误。
【解决方案2】:

您收到 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

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

【讨论】:

  • 问题是关于第三方库 socialauth-android,而不是 Facebook SDK。
  • @Code-Apprentice 好的,知道了。但我认为最好将 Facebook SDK 用于 Facebook 目的。它使您可以更好地控制一切。从对问题的回答中,我们可以看到使用第三方库的流行程度。无论如何,我相信我写下答案的所有努力总有一天会对某人有所帮助。
  • 非常感谢您的回答。感谢您提供使用 Facebook SDK 的详细信息。在我的特殊情况下,我使用 socialauth-android 是因为我想支持多个社交网络。
  • @Skynet 我希望如此。如果您在这里遇到任何问题,可以告诉我。或发布一个新问题。
  • 你有这方面的知识吗:developers.facebook.com/blog/post/2014/04/30/…
【解决方案3】:

将 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 2019-03-08
    • 2017-01-25
    相关资源
    最近更新 更多