Facebook Android SDK 会话 openForPublish 未创建新会话

2024-03-19

当我调用 Facebook Android SDK 时

Session tempSession = new Builder(this).build();
Session.setActiveSession(tempSession);
tempSession.openForRead(new OpenRequest(this).setPermissions(FB_PERMISSIONS));

它获得了 FB 会话并且一切都正常运行。但是当我更换Read with Publish。即如下

Session tempSession = new Builder(this).build();
Session.setActiveSession(tempSession);
tempSession.openForPublish(new OpenRequest(this).setPermissions(FB_PERMISSIONS));

它给出一个错误,指出会话为空,并且无法获得空会话的发布权限。

您能告诉我为什么会这样吗?处理这个问题的最佳方法是什么?


我花了一段时间才解决这个问题,以便用户可以单击按钮在 Facebook 上以动态方式分享我的产品。我不希望他们在真正想要共享之前被提示登录,所以我真的只是想要发布权限。以下将初始登录/读取权限请求与发布权限请求堆叠在一起。这将双重提示用户,首先是阅读,然后是发布,但无论解决方案如何,现在都需要这样做:

Session session = Session.getActiveSession();

if (session == null) {
    session = new Session.Builder(this).setApplicationId("<APP ID HERE>").build();

    Session.setActiveSession(session);
    session.addCallback(new StatusCallback() {
        public void call(Session session, SessionState state, Exception exception) {
            if (state == SessionState.OPENED) {
                Session.OpenRequest openRequest = new Session.OpenRequest(FacebookActivity.this);
                openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
                session.requestNewPublishPermissions(
                        new Session.NewPermissionsRequest(FacebookActivity.this, PERMISSIONS));
            }
            else if (state == SessionState.OPENED_TOKEN_UPDATED) {
                publishSomething();
            }
            else if (state == SessionState.CLOSED_LOGIN_FAILED) {
                session.closeAndClearTokenInformation();
                // Possibly finish the activity
            }
            else if (state == SessionState.CLOSED) {
                session.close();
                // Possibly finish the activity
            }
        }});
}

if (!session.isOpened()) {
    Session.OpenRequest openRequest = new Session.OpenRequest(this);
    openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
    session.openForRead(openRequest);
}
else
    publishSomething();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Facebook Android SDK 会话 openForPublish 未创建新会话 的相关文章

  • GCM 向主题发送消息:TOO_MANY_TOPICS 错误

    以前 GCM 每个应用程序有 100 万个主题订阅的限制 我发现他们现在已经取消了这一限制 基于发布 订阅模型 主题消息支持 每个应用程序无限订阅 https developers google com cloud messaging to
  • Android第一次动画不流畅

    我正在尝试一个动画将 imageView 从屏幕底部滑动到屏幕中心 但是当我第一次执行此动画时 它不平滑 但当第二次执行动画时 它是正常且平滑的 我几乎尝试了所有方法 但无法解决我的问题 这是我的动画文件
  • 与 Admob 广告单元 ID 混淆

    我跟着tutorial https developers google com admob android quick start在我的应用程序中创建广告横幅 到目前为止 这有效 我可以看到测试广告 但是 本教程指示我在两个不同的位置使用两
  • 共同的偏好不断消失

    我正在使用共享首选项来存储我的应用程序的登录凭据 除了一个用户之外 一切正常 一段时间后 共享偏好似乎会以某种方式重置或清除 我已针对该用户调整了我的应用程序 使其不再清除他的共享偏好设置 这样我就可以确定这不是我的应用程序的错 但即使在这
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • 接近语法错误(代码1)插入Android SQLite

    我正在创建一个通讯录应用程序 用户可以在其中输入姓名 电子邮件地址和号码 我希望将此数据保存在数据库中 但我似乎无法使插入方法起作用 我收到的错误是 android database sqlite SQLiteException near
  • Android 原理图内容提供程序库配置?

    Jake Wharton 在最近的一次演讲中提到了这个库 它看起来是避免大量样板文件的好方法 所以我尝试了一下 但没有任何成功 https github com SimonVT schematic https github com Simo
  • 获取 AlarmManager 中活动的 PendingIntents 列表

    我有办法获取活动列表PendingIntent在设备中 我开始工作AlarmManager我想看看我的PendingIntents 已正确创建和删除 也很高兴看到其他什么PendingIntent在那里 只是为了看看某些应用程序是否正在做一
  • 在 Jetpack Compose 中启动动画矢量 Drawable

    我有一个动画矢量可绘制R drawable my anim 我想在 Jetpack Compose 中展示并开始 可绘制对象显示 渲染正确 但动画未启动 这是撰写视图 Composable fun SplashView Surface mo
  • 带有自定义阵列适配器的微调器不允许选择项目

    我使用自定义阵列适配器作为微调器 但是 当在下拉列表中选择一个项目时 下拉列表保留在那里 并且微调器不会更新 这是错误行为 与使用带有字符串的通用数组适配器相比 这是自定义类 我错过了什么吗 谢谢 public class Calendar
  • Flutter 深度链接

    据Flutter官方介绍深层链接页面 https flutter dev docs development ui navigation deep linking 我们不需要任何插件或本机 Android iOS 代码来处理深层链接 但它并没
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 如何创建像谷歌位置历史记录一样的Android时间轴视图?

    我想设计像谷歌位置历史这样的用户界面 我必须为我正在使用的应用程序复制此 UIRecyclerView 每行都是水平的LinearLayout其中包含右侧的图标 线条和视图 该线是一个FrameLayout具有圆形背景和半透明圆圈Views
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 通过 ADB 拔出设备:“找不到服务”

    我必须测试我的应用程序在打瞌睡模式下的行为 根据文档 https developer android com training monitoring device state doze standby html testing doze 我
  • Android中webview的截图方法

    我在 webview 中的 html5 canvas 上画了一些线 并尝试使用下面的代码截取 webview 的屏幕截图 WebView webView WebView findViewById R id webview webView s
  • Android:有没有办法以毫安为单位获取设备的电池容量?

    我想获取设备的电池容量来进行一些电池消耗计算 是否可以以某种方式获取它 例如 三星 Galaxy Note 2 的电池容量为 3100mAh 谢谢你的帮助 知道了 在 SDK 中无法直接找到任何内容 但可以使用反射来完成 这是工作代码 pu
  • 在webview android中加载本地html文件

    我正在尝试在 android 的 webview 中加载 html 文件的内容 但是 它给了我 网页不可用错误 如果我尝试使用谷歌或雅虎等网站 它们就会起作用 html文件位于src gt main gt assests gt index
  • 为什么Android的ImageReader类这么慢?

    我尝试了适用于 Android 3 4 1 的全新 OpenCVJavaCamera2View但它太慢了 仅显示相机视图约 15 fps 当我尝试较旧的JavaCameraView相反 它给了我很好的结果 30fps 这是我相机的极限 我想
  • 无法运行我的应用程序,要求选择 Android SDK

    今天我已经安装了Android Studio 金丝雀 1 现在我无法运行我的应用程序 将出现以下对话框 我已经通过 文件 gt 项目结构 gt Android SDK 位置 设置了正确的 SDK 位置 期待您的帮助来解决这个问题 警告对话框

随机推荐

  • Xcode 7.0 Beta 4 的 GameCenter 框架图像未找到错误

    当尝试使用 Xcode 7 Beta 4 在实际 iPhone iOS 版本 8 4 上运行应用程序时 是否有人遇到此问题 dyld 库未加载 System Library Frameworks GameCenter framework G
  • React Native atob() / btoa() 在没有远程 JS 调试的情况下无法工作

    我有一个反应本机测试应用程序 当我远程启用调试js时 一切正常 运行后 它在设备 来自 XCode 和模拟器中运行良好 react native run ios 问题是 如果我停止远程 js 调试 登录测试将不再起作用 登录逻辑非常简单 我
  • 谷歌纸板 VR 传感器

    我正在使用谷歌纸板 its HeadTracker类 来检测 AR 应用程序中有关设备旋转的某些事情 它运作得很好 但是 在某些设备上 它不起作用 什么也没有发生 我认为这是因为他们没有必要的传感器 我的问题 1 我想在运行时检测当前设备是
  • 如何将文件重置或恢复到特定版本?

    如何在特定的提交哈希 我通过确定 将修改后的文件恢复到之前的版本git log https git scm com docs git log and git diff https git scm com docs git diff 假设您想
  • 更改背景颜色后如何保存 Matplotlib 图形?

    使用 Spyder IDE 我创建了一个 matplotlib 图 并将图形对象和轴对象的面 背景 颜色更改为黑色 当我尝试使用保存图形时plt savefig 不包括坐标区 标题和坐标区标签 我尝试过实施标准建议 https stacko
  • 如何以 0,00 格式显示价格(即一百 100,00)

    hii 我正在使用 devexpress 网格控件 在我的网格中有价格选项卡 因为我希望价格列以 0 00 格式显示 即如果我的价格是 3000 那么它应该显示 3 000 00 请帮助我 它是针对 winforms 的 前端是 c Dev
  • 如果库需要不同版本的“base”该怎么办?

    我正在尝试安装需要与我已安装的版本不同的基础版本的软件包 我有4 6 0 0 他们要求 lt 4 6 我如何在我的系统上安装这些 编辑 这些包实际上需要较旧的包才能构建 而不仅仅是作为 cabal 约束 由于无法重新安装base 在更新之前
  • C# 中的 const 字节字段按位 NOT

    我意识到 如果我有一个 byte 类型的字段或变量 我可以对其应用按位 NOT 并将其转换为字节 但是 如果该字段是 const byte 我仍然可以应用按位 NOT 但无法将其转换为字节 例如 这编译 class Program byte
  • 我可以从 LotusScript 函数返回列表吗?

    我想从 LotusScript 中的函数返回一个列表 eg Function myfunc List As Variant Dim mylist List As Variant mylist one 1 mylist two 2 myfun
  • 在 Windows Phone 8 中使用 App.Current.Terminate() 方法

    由于Windows Phone 8为我们提供了这种以编程方式终止应用程序的方法 如果我们在应用程序中使用此方法在导航历史记录中没有回溯条目的情况下终止页面 那么在提交应用程序时会出现任何问题吗 使用此调用时 认证不会有任何问题 但请确保在调
  • 上传 zip 和 rar 文件在 codeigniter 中不起作用

    我为允许的类型创建的设置 config allowed types doc docx pdf xls xlsx rtf txt rar zip 在我的mine php中 zip gt array application x zip appl
  • Cordova 构建:请安装 Android 目标:“android-22”。我不想要 android-22。我想要 android-19 - 我该怎么办?

    我正在努力解决我的phonegap 设置和构建我的第一个应用程序 我创建了一个 hello1 项目 我添加了android项目 平台android已经添加 现在 当我运行 cordova 构建时 我收到错误 错误 请安装 Android 目
  • 如何使用 Apache CXF 以简单的方式获取传入和传出的soap xml?

    我一直在 CXF 上摆弄服务器端拦截器 但实现简单的传入和传出拦截器 为我提供包含 SOAP XML 的纯字符串 似乎并不是一项简单的任务 我需要在拦截器中包含纯 XML 以便我可以将它们用于特定的日志记录任务 标准的 LogIn 和 Lo
  • 重定向到从 json 响应获取的 url

    我正在使用 jquery ajax 方法向 php 网页发出 http 请求 作为响应 我采用像 status success url http url 这样的 json 在成功函数上 我从 json 重定向到 url 但大多数时候它都会失
  • iOS UINavigationBar vs UIToolbar vs UITabBar

    让我知道在什么情况下应该使用哪一个 它们之间有什么区别 每个组件的优点和缺点是什么 The UI导航栏类实现用于导航分层内容的控件 它是一个栏 通常显示在屏幕顶部 包含用于在层次结构中上下导航的按钮 主要属性是左 后 按钮 中心标题和可选的
  • 将请求转发到弹簧控制器

    从 servlet 我将请求转发到 spring 控制器 如下所示 RequestDispatcher rd request getRequestDispatcher myController test reqParam value rd
  • Elisp 交互功能,具有输入历史记录

    有很多交互式函数将字符串输入作为参数 defun zb run cmd X arg1 argN interactive Marg1 Marg2 some logic 如何制作每个这样的功能zb run cmd 1 zb run cmd N
  • 同时设置jtextfield textlimit和大写

    我的应用程序中有几个 jtextfield 我想将其中一个允许大写和小写 并限制可以引入 jtextfield 的字符数 我必须区分类别 一个用于放置限制 另一个用于放置大写或小写 jtextfield限制的代码 package teste
  • 为什么这个方法会导致无限循环?

    我的一位同事向我提出了关于这种导致无限循环的方法的问题 实际的代码有点复杂 无法在这里发布 但本质上问题归结为 private IEnumerable
  • Facebook Android SDK 会话 openForPublish 未创建新会话

    当我调用 Facebook Android SDK 时 Session tempSession new Builder this build Session setActiveSession tempSession tempSession