Android Facebook 登录:如何在 XML 中没有 LoginButton 的情况下使用 LoginManager 检查登录情况

2024-01-13

我已经使用 LoginButton 在我的 Android 应用程序中完成了 facebook 登录检查,但我想使用 LoginManager 进行检查。我怎样才能修改我的代码以这种方式工作?

   LoginButton loginButton = (LoginButton) findViewById(R.id.fb_login_button);
    loginButton.setReadPermissions("user_friends");

    shareDialog = new ShareDialog(this);

    //Login Callback registration
    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Toast.makeText(getApplicationContext(), "in LoginResult on success", Toast.LENGTH_LONG).show();

            //Login success - process to Post
            if (ShareDialog.canShow(ShareLinkContent.class)) {
                String description = "description";
                ShareLinkContent linkContent = new ShareLinkContent.Builder()
                        .setContentTitle("title")
                        .setContentDescription(description)
                        .setContentUrl(Uri.parse("http://google.com"))
                        .setImageUrl(Uri.parse("http://google.com"))
                        .build();

                shareDialog.show(linkContent, ShareDialog.Mode.FEED);
            }

        }

        @Override
        public void onCancel() {
            Toast.makeText(getApplicationContext(), "in LoginResult on cancel", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onError(FacebookException exception) {
            Toast.makeText(getApplicationContext(), "in LoginResult on error", Toast.LENGTH_LONG).show();
        }
    });

另外,如果用户在通过共享对话框打开之前未登录,我想打开 Facebook 登录对话框。登录对话框应与共享对话框(在弹出窗口中)相同。怎么做?

Thanks!


您可以通过调用该方法来检查用户是否登录Loginmanger.登录并读取权限 https://developers.facebook.com/docs/reference/android/current/class/LoginManager/#logInWithReadPermissions,手动启动登录过程,无需按钮。您可以在onCreate方法。如果用户登录,它立即调用onSuccess回调方法,您可以在其中调用您的shareDialog。如果用户未登录,则会显示登录屏幕。如果成功(即用户登录),onSuccess方法将被调用;

实际上,您可以从代码中删除所有login button提到,并在末尾添加一行:

LoginManager.getInstance().logInWithReadPermissions(this, "user_friends"); //Log in to FB

您也可以使用 WritePermissions。您可以阅读有关所需权限的信息here https://developers.facebook.com/docs/facebook-login/permissions/v2.3#reference.

这是您的代码,但包装为登录方法,没有任何登录按钮实例。当您需要检查用户是否已登录时,您可以在任何地方调用它。

public void checkLogin() {
    //Login Callback registration
    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Toast.makeText(getApplicationContext(), "in LoginResult on success", Toast.LENGTH_LONG).show();

            //Login success - process to Post
            if (ShareDialog.canShow(ShareLinkContent.class)) {
                String description = "description";
                ShareLinkContent linkContent = new ShareLinkContent.Builder()
                        .setContentTitle("title")
                        .setContentDescription(description)
                        .setContentUrl(Uri.parse("http://google.com"))
                        .setImageUrl(Uri.parse("http://google.com"))
                        .build();

                shareDialog.show(linkContent, ShareDialog.Mode.FEED);
            }

        }

        @Override
        public void onCancel() {
            Toast.makeText(getApplicationContext(), "in LoginResult on cancel", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onError(FacebookException exception) {
            Toast.makeText(getApplicationContext(), "in LoginResult on error", Toast.LENGTH_LONG).show();
        }
    });

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

Android Facebook 登录:如何在 XML 中没有 LoginButton 的情况下使用 LoginManager 检查登录情况 的相关文章

  • 发生存储异常。无法在firebase中上传图片

    在我能够更改图像并将其上传到 firebase 之前 这段代码就可以工作 但现在我突然收到此错误 我不知道问题是什么 public class SettingsActivity extends AppCompatActivity priva
  • 如何在android中点击画布上绘制的圆圈?

    我正在开发一个人脸检测应用程序 在这个应用程序中 我必须在脸上的眼睛和嘴巴用户可以点击拖动圆圈 在检测到的人脸上根据自己设置位置 因此 所有圆圈都已成功绘制在脸上 但我无法单击特定圆圈并使用缩小选项在整个脸上移动 请建议我有关相同问题的正确
  • 在phonegap中播放本地声音

    我有一个 wav文件在我的www文件夹 我正在使用 jQuery 和以下代码 警报响起 但声音不播放 难道我做错了什么
  • 任务“:app:checkReleaseDuplicateClasses”执行失败

    我的 React Native Android 构建中突然出现构建问题 令人惊讶的是 它是早上建好的 没有做任何改变 但突然就失败了 这就是我得到的错误 知道为什么会发生这种情况吗 在 stack 和 GitHub 中也看到了一些类似的问题
  • 为网络和/或持久存储序列化 Android Bundle?

    我需要序列化一个全面的应用程序 游戏 状态 以便通过网络传输或保存到磁盘并在以后检索 当然 捆绑包用于在多个用例中保存 恢复状态 因此使用它们将是理想的选择 但是 由于某种原因 Bundle 不可序列化 寻找解决方案只发现了将 Bundle
  • 从Asynctask返回结果

    如果我的 Android 应用程序中有这个后台工作文件 并且它从我的数据库获取数据 我如何将字符串 结果 传递给另一个类 后台工作人员连接到我的服务器 然后使用 php 连接到数据库 public class BackgroundWorke
  • 在 Android 中关闭 Spinner 中的下拉菜单

    在 Android 中打开和关闭微调器时 我需要为箭头图标设置动画 打开微调器时我可以旋转箭头 我只是放了一个setOnTouchListener on the Spinner 当下拉菜单关闭或隐藏时 问题就来了 因为我不知道如何在该操作上
  • 如何知道点击的widget id?

    我已经实施了一个widget与ImageButton and a TextView That ImageButton启动一个activity当它被点击时 这activity使用用户在活动上写入的内容更新小部件文本EditText 现在的问题
  • 如何从debug.keystore文件获取MD5?

    我使用一些命令来获取 MD5 私钥debug keystore文件 但实际上我得到的是 SHA1 私钥而不是 MD5 我不知道如何获得MD5 这是我使用的命令 keytool list alias androiddebugkey keyst
  • 来自外部 XML 的 Android 本地化

    是否可以使用从服务接收到的 XML 在运行时翻译 Android 应用程序 如果可能的话 请有人指出我正确的方向 谢谢 Warning 我读到的所有内容都表明 让您的应用程序更改语言不是一个好主意 因为 Android 框架不支持它 并且可
  • 将搜索结果更新为 Android 中的 Lazy Adapter

    我有项目列表 想为其实现搜索功能 因此 我有一个带有 addTextChangedListener 的文本框 搜索结果运行良好 但当我尝试将结果设置为 ListView 时 新结果将附加到旧结果中 我正在使用惰性适配器 如何清除适配器中的旧
  • MAT(Eclipse 内存分析器)- 如何从内存转储中查看位图

    I m analyzing memory usage of my Android app with help of Eclipse Memory Analyzer http www eclipse org mat also known as
  • ImageButton 拉伸背景图像

    我正在尝试创建一个没有边框的 ImageButton 但遇到了图像按钮大小的问题 我使用 Eclipse ADT 将 ImageButton 拖到布局中并选择背景图像 图像按钮显示如下 正如您所看到的 背景图像和图像按钮周边之间有一个边框
  • 对基本适配器类及其功能的疑问

    我正在尝试自定义列表视图 我使用数组列表添加对象列表 并将其发送到扩展基本适配器的类 当我扩展基本适配器类时 它实现了一些方法 例如 getView 等 在 getView 中 我将其发送到将名称 数据 分配给 XML 格式的自定义菜单的类
  • Android框架结构与MFC/Win32结构的比较?

    我为 Android 和 Windows 进行开发 使用 MFC 有时使用 win32 昨天我随意比较了这两个框架 它们显然非常非常不同 因此 Windows 开发与 Android 开发有很大不同 我想知道人们认为 Android 这样的
  • 我可以在主线程上读取一个小 txt 文件,还是应该始终避免那里的 I/O?

    我正在读取一个小的 json 文件 其中有几行 它存储在用户设备的内部应用程序文件夹中 我所做的就是这样 JSONObject jsonObject new JSONObject MyUtils inputStreamToString My
  • 在 Android SDK 中通过单击按钮更改背景颜色不起作用

    我有一个简单的程序 可以在单击按钮后更改背景颜色 但它不起作用 public class ChangeBackgroundActivity extends Activity Called when the activity is first
  • 在Android中提取视频帧

    我想知道是否可以从 Android 中正在运行的视频中提取帧 我需要定期提取帧并将其发送以进行进一步处理 有人能为我找到答案吗 Thanks Abhi 您可以使用媒体元数据检索器 http developer android com ref
  • SambaFileInputStream 和 FileInputStream 有什么不同?

    我需要从 samba 服务器流式传输视频 并且我使用 nanohttpd 在我的项目中创建简单的服务器 当我使用本地文件中的 fileinputstream 时 视频视图可以按设置播放视频 http localhost 8080 publi
  • 将 firebase 消息传递添加到 flutter android 项目时出现依赖错误

    我已将 firebase 消息传递添加到我的 Flutter 项目中 在 iOS 上运行良好 在 Android 上运行时出现错误 Android dependency androidx localbroadcastmanager loca

随机推荐

  • Celery 收到类型的未注册任务(运行示例)

    我正在尝试跑步example http ask github com celery getting started first steps with celery html id3来自芹菜文档 I run celeryd loglevel
  • Scanner vs. StringTokenizer vs. String.Split

    我刚刚了解了 Java 的 Scanner 类 现在我想知道它如何与 StringTokenizer 和 String Split 进行比较 竞争 我知道 StringTokenizer 和 String Split 只适用于字符串 那么为
  • 使用 Javascript 的无层 Web 框架?

    Links http links lang org是一种类似 Lisp 的函数式 Web 编程语言 框架 可以轻松编写一段代码 并将其编译为服务器端代码 客户端 JS 和 HTML 从而使编写 Web 应用程序变得更加容易 由于客户端和服务
  • Bootstrap Glyphicons 是如何工作的?

    我了解 CSS 和 HTML 的一些基础知识 有时会使用它们 但我不是专业人士 而且我很好奇 Bootstrap Glyphicons 的工作原理 我的意思是 Bootstrap zip 文件中没有图像 那么图像从哪里来呢 在 Bootst
  • 以实例变量和参数为键的 Spring 缓存

    我正在使用 ehcache 来缓存方法结果 键必须是成员对象和方法参数的组合 我的课程看起来像这样 Class A private B b Cacheable value someCache key some key based on B
  • console.log() 在控制台以外的对象上调用

    我记得总是当我想要通过时console log作为某个函数的回调参数 除非我使用bind 绑定方法console to it 例如 const callWithTest callback gt callback test callWithT
  • 使用 gradle 在 intellij 中从 JUnit 4 升级到 JUnit 5

    我想将我的 Gradle 项目测试从 JUnit 4 转换为 JUnit 5 由于有很多测试 我不想同时转换它们 我尝试配置我的build gradle像这样 apply plugin java compileTestJava source
  • 使用 c3 js 从 json 绘制饼图

    以代码为例 我需要生成一个有 4 个分区 site1 site2 的饼图 每个分区对应于其各自的上传值 在上面的代码中我无法实现这一点 我已指定值 upload 我必须指定的确切值是多少 Thanks chart c3 generate d
  • 处理并发文件写入

    我正在开发一个 ASP NET 应用程序 它接受用户输入并将其序列化到文本文件中 现在 当文件仍在写入时出现第二个更新请求时 将生成 IOException 如何处理对此文件的并发更新请求 你可以实现一个生产者 消费者 其中主线程将对象添加
  • NeuQuant.js(JavaScript颜色量化)JS转换中隐藏的bug

    NeuQuant js https github com antimatter15 jsgif blob master NeuQuant js当图像宽度和高度是 100 的倍数时效果很好 300x300 否则的话 显然有一个bug 299x
  • 如何在 Chrome 开发工具中设置元素的 :hover 状态并编辑子元素的样式

    假设我们有这样的风格 parent child parent hover child 两个选择器都为子元素设置样式 我想要的是编辑第二种样式 我点击 parent并设置 hoverChrome 开发者工具中的状态 单击一个 child元素来
  • 2d 矩阵的 Numpy 矩阵乘法得到 3d 矩阵

    我有两个 numpy 数组 比如 A array 0 1 2 3 4 5 B array 6 7 8 9 10 11 对于 A 和 B 的每一行 分别表示 Ra 和 Rb 我想计算转置 Ra Rb 因此 对于给定的 A 和 B 值 我想要以
  • “NoneType”对象没有属性“secret_key”

    我收到这个错误 NoneType 对象没有属性 secret key 当我尝试使用更新我的应用程序时git pull我已经在以下路径配置了AWS凭证 纳米 home USER aws config 我让它 我提到的存档 如下 profile
  • 如何将非消耗性订阅改为自动续订并保留老用户?

    我在 Apple Store 中有非消耗品定价的应用内购买功能 该应用程序的使用需要付费 如何将非消耗性订阅更改为自动续订订阅 以某种方式保留购买该应用程序的用户 新用户可通过自动续订订阅付费 不 你无法更改它 只需确保在你的应用程序中 你
  • android putextra 没有启动活动

    我需要帮助 我有两个活动和一个数据库 我想做的就是当我按下活动 A 中的按钮时 我将 editText 中的字符串发送到活动 B 在活动 B 中 我尝试将该字符串插入我的数据库中并将其显示在列表视图中 如果我在活动 A 中启动活动 B 则一
  • 如何让iOS应用程序与蓝牙连接?

    如何使用蓝牙制作iOS应用程序 我需要一个通过蓝牙与其他设备 例如笔记本电脑 连接并交换数据的应用程序 许多 BLE 软件包 但无法找到经典蓝牙的软件包 如果您想使用Apple iOS设备的经典蓝牙接口 您必须遵守 接受苹果的MFi htt
  • PHP:在线程之间共享静态变量

    我在 PHP 的不同线程之间共享静态变量时遇到问题 简而言之 我想要 1 在一个线程中写入静态变量 2 在其他线程中读取并进行所需处理并清理 为了测试上述要求 我编写了下面的 PHP 脚本
  • Guava 缓存“expireAfterWrite”似乎并不总是有效

    private Cache
  • 如何将 5000 多行从 google Analytics 导出到 Excel

    我正在尝试将 5000 多行从 google Analytics 导出到 Excel 工作表 但我无法这样做 我在谷歌上搜索了很多关于它的内容 并尝试了 url 修改来替换explorer table rowCount 3D5000 wit
  • Android Facebook 登录:如何在 XML 中没有 LoginButton 的情况下使用 LoginManager 检查登录情况

    我已经使用 LoginButton 在我的 Android 应用程序中完成了 facebook 登录检查 但我想使用 LoginManager 进行检查 我怎样才能修改我的代码以这种方式工作 LoginButton loginButton