5

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

3 回答 3

4

Looking through the SocialAuth Wiki I found a current bug matching your description:

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

So you're not alone with your problem. You could provide any more information in their issue tracker to help and to indicate the severity of the problem.

But besides that I'm afraid you'll just have to wait - or consider fixing the bug in the otherwise open source library on your own.


You could also check whether the original Java implementation or the .Net port are experiencing the same problem; if not the code from those libraries might help to find a solution.

于 2014-07-10T18:42:25.197 回答
2

您收到 403 Authentication 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;

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

  • 接下来登录后的内容

用户登录后,您将获得一个authentication tokensessionFacebook 相关的信息。所以现在您可以使用它在用户的个人资料上发布。

  • 如何发帖

现在有很多方法可以在 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文件中提及相同的内容。

更多信息

于 2014-07-10T05:28:35.053 回答
0

用下面的 jar 文件 url 链接替换 ​​socialauth-4.4.jar。并检查 Facebook 共享是否有效。

从下载 jar 文件

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

于 2014-11-07T15:25:31.703 回答