使用 3.0 SDK 在 FB 墙上发布

2024-04-20

各位程序员大家好,我在使用新的 Facebook SDK 时遇到了困难,

场景是:

我使用片段,所以我按照以下步骤操作

为什么 Android Facebook 界面不支持 Fragments? https://stackoverflow.com/questions/10943392/why-doesnt-android-facebook-interface-work-with-fragments/10964421#comment17300713_10964421

现在我得到了 oncomplete 和令牌 ID

现在我想在我的墙上张贴,所以我创建了这个功能

private void publishStory(Session session) {

    if (session != null){

        // Check for publish permissions    
        session.addCallback(new StatusCallback() {

            @Override
            public void call(Session session, SessionState state,
                Exception exception) {
                List<String> PERMISSIONS = Arrays
                    .asList("publish_actions");
                session
                    .requestNewPublishPermissions(new Session.NewPermissionsRequest(
                        getActivity(), PERMISSIONS));

                Request request = Request.newStatusUpdateRequest(
                    session, "Temple Hello Word Sample",
                    new Request.Callback() {
                        @Override
                        public void onCompleted(Response response) {
                            Log.i("fb:done = ", response.getGraphObject() + ","
                                + response.getError());
                        }
                    });
                request.executeAsync();

            }

        });

并将声明放在未完成的位置

    public void call(final Session session, SessionState state, Exception exception) {
            if (session.isOpened()) {
                Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
                    @Override
                    public void onCompleted(GraphUser user, Response response) {



                                                        publishStory(session);
                        }
                        else
                        {
                            Log.v("FACEBOOK ", "NO ACCESS");
                        }
                    }
                });
            }

我的问题出在这行代码上session.addCallback(new StatusCallback() {它会跳过下一步,从而结束该功能,而不会在我的墙上发布。

我非常确定会话处于活动状态,因为我有 applicationID 和访问令牌。

有帮助吗?

Thanks

EDIT

我根据下面的答案使用此代码并添加了新的权限

private void publishStoryTEST(final Session session)
{       

    if (session != null) 
    {
        Bundle postParams = new Bundle();
        postParams.putString("message", "TEST");
        Request.Callback callback = new Request.Callback() 
        {


            public void onCompleted(Response response) 
            {


                JSONObject graphResponse = response.getGraphObject().getInnerJSONObject();
                String postId = null;
                try 
                {
                    postId = graphResponse.getString("id");

                } 
                catch (JSONException e) 
                {
                    Log.i("JSON", "JSON error " + e.getMessage());
                }
                FacebookRequestError error = response.getError();
                Log.e("post response", response.toString());
                if (error != null) 
                {
                } 
                else 
                {
                }

            }
        };
        List<String> PERMISSIONS = Arrays
                .asList("publish_actions");
        session.requestNewPublishPermissions(new Session.NewPermissionsRequest(getActivity(), PERMISSIONS));    
        Request request = new Request(session, "me/feed", postParams, HttpMethod.POST, callback);

        RequestAsyncTask task = new RequestAsyncTask(request);
        task.execute();

    }
}

但我仍然收到错误消息

The user hasn't authorized the application to perform this action

为什么我仍然收到该错误?权限从来没有调用过吗?


这个问题很常见,我与您分享我当前在应用程序中使用的发布方法的工作源代码。

private void publishStory(String status)
{       
Session session = Session.getActiveSession();

if (session != null) 
{
Bundle postParams = new Bundle();
postParams.putString("message", status);
Request.Callback callback = new Request.Callback() 
    {
    public void onMalformedURLException(MalformedURLException e)
          {

          } 
    public void onIOException(IOException e) 
          {

          } 
    public void onFileNotFoundException(FileNotFoundExceptione) 
          {

          } 
    public void onFacebookError(FacebookError e) 
          {

          }

public void onCompleted(Response response) 
{
    JSONObject graphResponse = response.getGraphObject().getInnerJSONObject();
    String postId = null;
    try 
    {
        postId = graphResponse.getString("id");
    } 
    catch (JSONException e) 
    {
        Log.i("JSON", "JSON error " + e.getMessage());
    }
    FacebookRequestError error = response.getError();
    Log.e("post response", response.toString());
    if (error != null) 
    {
    } 
    else 
    {
    }
}
};

Request request = new Request(session, "me/feed", postParams, HttpMethod.POST, callback);
RequestAsyncTask task = new RequestAsyncTask(request);
task.execute();
}
}


我希望这能解决您的问题。

EDIT:
请参阅以下链接,了解设置 Facebook SDK 3.0 以及适当权限和发布功能的详细过程。
Android 登录失败后发布到 facebook https://stackoverflow.com/questions/17683338/post-to-facebook-after-login-fails-android/17684571#17684571
http://www.kpbird.com/2013/03/android-login-using-facebook-sdk-30.html http://www.kpbird.com/2013/03/android-login-using-facebook-sdk-30.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 3.0 SDK 在 FB 墙上发布 的相关文章

  • Android + XAMARIN + 强制屏幕保持“纵向”模式(使用 AndroidManifest)

    我在这里阅读了这个问题的一些答案 但不知何故我无法让它发挥作用 我的 AndroidManifest xml 如下所示
  • Android 工具栏:横向模式下的小标题文本

    我正在 Android 上测试新的 Toolbar 和 AppCompat 主题 但遇到了问题 我的工具栏标题文本在纵向模式下看起来是正常大小的 但在横向模式下它变得相当小 尽管我没有在代码中执行任何操作来更改标题的文本大小 以下是屏幕截图
  • 在 Kotlin 中将 Dp 转换为 Px - 这种转换永远不会成功

    我在使用 Kotlin 编码时遇到了问题 我复制粘贴了一个java代码示例 https stackoverflow com a 9685690 6818446将 DP 转换为像素 以便将其作为以编程方式设置填充的参数 我原本期望 IDE 能
  • 从 Facebook 页面提取 RSS 源

    我需要帮助从 Facebook 页面提取 RSS 提要我正在使用以下代码 但它一直给我一个错误 string url https www facebook com feeds page php id 40796308305 format r
  • BroadcastReceiver未收到警报广播

    我有一个设置新的重复警报的代码 在生产中我将使用 inexactRepeating 但是我注册的用于处理它的 BroadCastReceiver 没有被调用 这是我设置闹钟的代码 newAlarmPeriod 5000 For debugg
  • 如何使用Android读取Service中的加速度计数据

    通常 在 Android 中 我们通过重写 OnSensorChanged 函数来读取 Activity 中的加速度计数据 我很好奇我们如何在 服务 中做到这一点 谢谢 文森特 实际上OnSensorChanged SensorEvent
  • 如何减少 MediaCodec H264 编码器延迟

    我正在尝试使用 Android6 0 的 MediaCodec 将 h264 实时低延迟编码为流 编码器大约有 6 帧延迟 我想知道如何减少 代码来自屏幕记录 cpp https android googlesource com platf
  • Android SDK 中缺少 Gradle(使用 cordova + ionic)

    是的 我搜索了这个 但没有搜索到任何内容 只是有关 ANDROID HOME 路径的信息 但就我而言 我认为这不是真正的问题 当我尝试做的时候ionic build android我收到这个错误 错误 在 android sdk 中找不到
  • Android - GC 滞后于列表视图滚动“更大”的图像

    在列表视图中 我想在列表条目上绘制一个图像 这 20 张图像必须缩放以填充垂直模式的宽度 手机分辨率为 480 x 800 像素 SGS2 图像分辨率为 400x400 大小约为 100KB 我已将图像放在可绘制文件夹中 当我滚动列表时 它
  • 原生编程对于移动开发有何优势?

    我需要为一家公司在一些主要的移动操作系统上开发应用程序 特别是 iOS Android 和 WP7 我最初计划为三种不同的操作系统编写三个独立的应用程序 每个应用程序都使用本机 SDK 然而 这样做有什么好处吗 有许多可用的跨平台工具 Se
  • 如何在android中的网格视图中进行分页? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何在 android 中对 gri
  • Android Facebook SDK - 无法接收访问令牌

    我正在尝试在我的 Android 应用程序中使用 Facebook SDK 这是片段 Facebook myFacebook new Facebook 123456789012345 myFacebook authorize LogInSc
  • Nexus 10 (Android 4.4.2) 中未设置 FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

    我有一个主要活动 A 它将调用另一个活动 B 其 oncreate 如下所述 当我在活动 B 中按主页按钮并按最近使用的应用程序时 从未设置标志 FLAG ACTIVITY LAUNCCHED FROM HISTORY 我使用的是三星 Ne
  • 在 Android 应用程序中读取 CSV 文件

    我正在开发一个概念验证应用程序 以便我可以在我正在制作的更大的应用程序中实现该功能 我对 Java 和 Android 开发有点陌生 但希望这个问题不会太简单或太复杂 基本上 我试图从 CSV 文件中读取字符串列表 并使其可用于在应用程序的
  • Android 设计导航抽屉 - 如何在 nav xml 中添加开关?

    我正在使用新的 Android 设计导航抽屉 我想在抽屉里加一个开关 有办法实现这个吗 这是菜单 xml menu menu
  • Android GLSurfaceView 具有可绘制背景

    我有一个带有可绘制对象作为背景的 GLSurfaceView 但是在没有 surfaceView setZOrderOnTop true 的情况下渲染时只有背景可见 我需要避免使用 setZOrderOnTop true 因为在 GLSur
  • 设备收到 GCM Android 通知但未显示

    尽管通知已在应用程序本身中注册 但我的 Ionic Android 应用程序的 GCM Cloud 消息通知未出现在我的设备的主屏幕中 我正在使用 npm 模块node gcm https www npmjs com package nod
  • 在Android Dialog中,如何为startActivityForResult设置onActivityResult?

    从活动中 我可以轻松设置onActivityResult 并打电话startActivityForResult 一切正常 现在 我需要打电话startActivityForResult 从对话框中 但我无法设置onActivityResul
  • 如何打开相机然后切换到图像模式(反之亦然)

    就我而言 我想拍照或捕捉视频 实际上 如果我创建单独的意图 我可以做到这些 我的意思是我可以将相机打开为图像模式或视频模式 但无法在它们之间切换 这与我使用的意图过滤器有关吗 我应该怎么办 我如何在它们之间切换 我有同样的问题 在我想放置一
  • Eclipse 中的 Android 框架源码级调试

    Android 框架的 Java 源代码可从 source android com 获取 我可以下载它们并将其提供给 Eclipse 以便在调试时进入框架方法吗 更好的是 有人知道 Eclipse 插件可以根据需要自动从 Android G

随机推荐

  • 如何发送http basic auth post?

    我的任务是使用基本身份验证创建 http 帖子 我正在 asp net MVC 应用程序中使用 C 进行开发 我也得到过这个例子 POST v2 token endpoint HTTP 1 1 Authorization Basic Y2x
  • 驻留内存与活动字节

    假设 我正在使用 Cocos2d 2 0 和 ARC 开发一个 iPhone 项目 并使用 XCode 4 5 2 的 Instruments 简短的问题 为什么驻留内存比活动字节高得多 我这样说是因为 使用仪器 我确实收到了内存不足的警告
  • 如何在节点redis客户端上设置读取超时?

    在 github 上我没有看到读取超时的选项 https github com NodeRedis node redis https github com NodeRedis node redis There s connect timeo
  • 使用“npm install”安装 jquery-ui

    我从这里看到https github com jquery jquery ui https github com jquery jquery uijquery ui 的最新版本是 1 11 4 但是 当我使用 npm install jqu
  • 为什么构造函数被调用两次

    我不明白怎么办constructors work 这里我声明了一个对象obj2 它调用构造函数abc 这完全没问题 但是当我分配时 obj2 100 为什么编译器允许将整数初始化为类对象 如果它允许的话 那么它是如何销毁对象的 然后是如何调
  • `__asm nop` 在 Windows 中相当于 GCC 编译器中的 `asm volatile("nop");`

    在 Windows 中 可以 asm nop被交换为asm volatile nop 在 GCC 编译器中使用 并产生相同的结果 我读过volatile 在 GCC 中 保证调用不会被优化掉 然而 它不能直接移植到 Windows 我很好奇
  • 如何将日期时间四舍五入到最接近的 5 分钟?

    我需要一个Python3函数来四舍五入datetime datetime反对精确到 5 分钟 是的 这已经在之前的 SO 帖子中讨论过here https stackoverflow com questions 32723150 round
  • 在 PHP 中的任意位置插入数组中的新项目

    如何将新项目插入到数组的任意位置 例如数组的中间 您可能会发现这更直观一些 它只需要一个函数调用array splice http www php net manual en function array splice php origin
  • 为什么我无法重写 Java 中的 wait() 方法? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我找到方法了wait 在课堂里Object 它是最终的 这意味着该方法不能被重写 有什么想法为什么是最终的吗 Flavio 这实际上是一个非常好
  • Android 列表视图与部分

    您好 我在尝试了解分段列表视图的工作原理时遇到问题 我让它工作到正常的列表视图中 但现在我想将部分添加到我的列表中 如何在其中添加节标题 这是我有效的代码 public class ChooseTeamActivity extends Li
  • R数据表:移动列表类型的行[重复]

    这个问题在这里已经有答案了 我有一个 data table 其中包含list type x data table k seq 1 5 l list c 4 5 gt x k l 1 1 4 5 2 2 4 5 3 3 4 5 4 4 4 5
  • Rails 3.2.3 无法在 ubuntu 12.0.4 中使用 webrick 在 https 上工作

    一直在尝试在 ubuntu 12 0 4 中使用 webrick 获得一个新的 刚刚创建的 Rails 应用程序来在 ssl 上工作 已经尝试了我所知道的所有可能的方法 尝试使用config force ssl true in 应用程序 r
  • 相对文件路径问题

    我正在开发一个尝试读取配置文件的 portlet 我正在 eclipse 项目中开发它 我目前将配置文件放置在 WEB INF 文件夹 位于 root WEB INF 中 中 其名称为 config properties 如何使用 java
  • node.js - 如何将数组写入文件

    我有一个示例数组如下 var arr 1373628934214 3 1373628934218 3 1373628934220 1 1373628934230 1 1373628934234 0 1373628934237 1 13736
  • 查找 A 中与 B 中没有关联行的行,其中 FK 位于 B 上?

    我一直在做的是 SELECT FROM a LEFT JOIN b ON b a id a id WHERE b id IS NULL 基本上 我试图找到的行a没有关联的b 外键存储在b 这是执行此操作的正确方法 还是有其他类型的连接来执行
  • 使用 getCollection 和 addLevelFilter 列出 Magento 类别,但排除默认根类别

    我使用以下代码来获取集合并使用 addLevelFilter 2 在级别上进行过滤 这会完美地输出第 2 级的所有类别 除了它还会提取列表中的默认根类别之外 我想从视图中排除它 但在查看了所有可用的方法后 我没有看到任何可以帮助我删除 排除
  • 如何在最新版本的 Tensorflow 中使用 MultiVariateNormal 分布

    I need to use the MultiVariateNormal distribution from the tf contrib distributions MultivariateNormal However in the la
  • Backbone.View“el”混淆

    视图应该如何el被处理 必须设置它 否则事件不会触发 请参阅here https stackoverflow com questions 4909564 backbone js why isnt this event bound 但它应该是
  • MySQL - 按 count() 和 GROUP BY 排名

    我有我的 mysql 表posts 我的论坛的所有帖子都存储在其中 就像这样 id uid thread post title text time int int varchar int varchar text int 现在我想显示用户个
  • 使用 3.0 SDK 在 FB 墙上发布

    各位程序员大家好 我在使用新的 Facebook SDK 时遇到了困难 场景是 我使用片段 所以我按照以下步骤操作 为什么 Android Facebook 界面不支持 Fragments https stackoverflow com q