关于FaceBook的接入笔记


千万不要看中文,千万不要看中文,千万不要看中文。建议英文加自己的翻译去翻译,中文文档是过时的,注意。 我又从繁体的输入法回来了~~

梦开始的地址:https://developers.facebook.com/

实际上所谓接入facebook,通常指的是messenger 平台
messenger开发文档

零、会触发回调接口失效的原因

1、更换SSL证书导致

更新SSL证书,由于生成的证书链变化也会导致失效

2、变更ip地址

虽然可能是绑定域名,但是会检测ip地址变动

3、账户权限变更

2022年4月前,develop权限用户旧版本设置的主页还是生效,4月后,develop仅能设置自己创建的主页,需要admin才可以调用拥有者的主页。

一、配置facebook 环境

在这里插入图片描述

1)创建一个用于调试Messenger的主页

在这里插入图片描述

2)配置Webhook回调地址

fbBotToken 自定义,用于配置回调地址

fbPageAccessToken 通常在配置回调地址后配置

fbBotToken=lg_token_for_test
fbPageAccessToken=EAAPeK646ZC2kBANAlEGLXDHOhZBStKAEJZCzC5FvRZAZC1VRIYAVSPMZAGyYsgMY4IwMOYSlhKlmm94H6fUB04ixwySZBmonqEmwsmzMxmgykHGgG0Pjh6n52XLylCSYrM8Ys0qqTFHNCHcXoEBfpWS0bmYVR0GYJZCFBJYxzy92oYWNgjTkv4tC

3)如何测试facebook

messenger搜索自己的主页,就可以沟通了

二、开始开发Messenger

1、不使用辅助sdk

https://developers.facebook.com/docs/messenger-platform/

自己慢慢看,如果有时间,我也自己搞

2、使用辅助sdk

2.1 基础jar包依赖流程

这个,我们可以自定义sdk包,然后根据自己需求做出改动
Tips: 建议直接复制jbot内文件,避免依赖等问题,仅需删除BotWebSocketHandler 即可

1) github 地址 :

https://github.com/rampatra/jbot

2)打包加入lib依赖:

编译好后直接加入

3)新版webHook 消息类型分析

发生各种交互或事件(包括某人发送消息时)时通知您。Messenger平台将Webhook事件作为POST请求发送到您的Webhook。

在这里插入图片描述

一般情况仅需勾选message事件即可

可以更方便的通过事件驱动类型来监听数据

#具体webhook 可以参照
https://developers.facebook.com/docs/messenger-platform/webhook

通过webhook设置不同的类型,可以对不同类型进行分配各自的回调处理(若配置回调后,持续不响应Webhook事件,会自动相应递进警告且自动取消webhook订阅的问题)

2.2 全盘CV(拷贝忍者自己改)

通常我建议自行更改http客户端,以免出现参数无法传递的问题

定位到FbApiEndpoints,将其中的restTemplate替换为自己的http客户端。

三、功能搭建组合

主要针对收发信息的大部分内容进行操作,结合新版WebHook来对消息内容解析

1、收发事件基本已经归类到EventType中,通过对时间的监听收发

2、已经对Messenger回复信息进行包装为Event,可以轻松获取结构化的信息

1、快速回复(按钮)

对应:QUICK_REPLY

可以针对性的提供按钮,最多13个

回复时 将已点击按钮的标题作为消息发布到对话中。

参数解释(button)

button

属性类型说明
content_typestring必须是以下类型之一text:发送文本按钮user_phone_number:发送一个按钮,让消息接收人可以发送与其帐户绑定的手机号。user_email:发送一个按钮,让消息接收人可以发送与其帐户绑定的邮箱。
title字符串如果 content_type 为“text”,则必须设置此属性。这些文本将显示在快速回复按钮上。请勿超过 20 个字符。
payload字符串,数值如果 content_type 为“text”,则必须设置此属性。将通过messaging_postbacks Webhook 事件向您发回的自定义数据。不超过 1000 个字符。 如果设置了 image_url,则可将此项设置为空字符串
image_url字符串**可选。**将在文本快速回复按钮上显示的图片的网址。图片大小不低于 24 X 24 像素。如果图片过大,系统会自动进行裁剪并调整大小。 如果 title 为空字符串,则必须设置此属性。

1)纯文本

#只需要在text填入所需回复文本即可
reply(Event event, String text)

2)文字快速带背景

#参数说明
title:展示的内容
payload:真实返回的内容
image_url:背景图url

#单一按钮
message = new Message().setQuickReply(new Button()
.setTitle("展示内容").setPayload("真实相应内容").setImageUrl("背景图url"));

#多按钮
message = new Message().setQuickReplies(new Button[]{
new Button().setTitle("展示内容1").setPayload("真实相应内容2").setImageUrl("背景图url3"),
new Button().setTitle("展示内容1").setPayload("真实相应内容2").setImageUrl("背景图url3")
});

#调用上方message
reply(event,message)

3)位置快速回复

message = new Message().setQuickReply(new Button().setContentType("location").setTitle("请求位置"));

#调用上方message
reply(event,message)

4)获取用户号码

如果用户的个人资料没有电话号码,则不会显示快速回复。

new Message().setQuickReply(new Button().setContentType("user_phone_number").setTitle("获取用户号码"));

#调用上方message
reply(event,message)

5)获取用户电子邮件

如果用户的个人资料没有电子邮件地址,快速回复将不会显示

new Message().setQuickReply(new Button().setContentType("user_email").setTitle("获取用户电子邮箱"));

#调用上方message
reply(event,message)

2、模版信息

模版信息统一调用方法

#下方都属于message参数的各种类型
reply(event,message)

1)常规模版

参数解释(generic)

message.attachment

属性类型描述
typestring值必须是 template
payloadpayload常规模板

message.attachment.payload

属性类型描述
template_typestring值必须是 generic
image_aspect_ratiostring**可选的。**用于渲染由指定的图像的宽高比element.image_url。必须为horizontal(1.91:1)或square(1:1)。默认为horizontal
elementselement[]一个element对象数组,描述要发送的通用模板的实例。指定多个元素将发送可水平滚动的模板轮播。最多支持10个元素。

message.attachment.payload.elements

下方button为快速回复的对象

属性类型描述
titlestring显示在模板中的标题。最多80个字符。
subtitlestring**可选的。**在模板中显示的字幕。最多80个字符。
image_urlstring**可选的。**要在模板中显示的图像的URL。
default_actionbutton可选的。点击模板时执行的默认操作。接受与 上述快速回复按钮相同的属性,但除外title
buttonsbutton[]**可选的。**附加到模板的按钮数组。每个元素最多支持3个按钮。
1、轮播展示(最多10个元素)
#多个element可以用作轮播图
    
Message message = new Message();
Element[] element = new Element[]{
    new Element().setTitle("test1").setImageUrl("https://plugins.compzets.com/images/as-logo.png")
        .setSubtitle("We have the right hat for everyone 11111")
        .setDefaultAction(new Button().setType("web_url").setUrl("https://plugins.compzets.com")
                          .setMessengerExtensions(false).setWebviewHeightRatio("tall")),
    
    new Element().setTitle("test2")
        .setImageUrl("https://plugins.compzets.com/contentshare/img/cs-logo-64.png")
        .setSubtitle("We have the right hat for everyone 22222")
        .setDefaultAction(new Button().setType("web_url")
                          .setUrl("https://plugins.compzets.com/images/fs-logo.png").setMessengerExtensions(false)
                          .setWebviewHeightRatio("tall"))};

message.setAttachment(new Attachment().setType("template")
                      .setPayload(new Payload().setTemplateType("generic").setElements(element)));
2、单元素配合按钮(每个元素最多3个按钮)
Message message = new Message();
Element[] element = new Element[]{
    new Element().setTitle("test1").setImageUrl("https://plugins.compzets.com/images/as-logo.png")
        .setSubtitle("We have the right hat for everyone 11111")
        .setDefaultAction(
        
        new Button().setType("web_url").setUrl("https://plugins.compzets.com")
                          .setMessengerExtensions(false).setWebviewHeightRatio("tall"))
        .setButtons(new Button[]{new Button().setTitle("按鈕描述")
            .setPayload("真实相应内容")
                                })
};
message.setAttachment(new Attachment().setType("template")
                      .setPayload(new Payload().setTemplateType("generic").setElements(element)));

2)列表模版

参数解释(list)

message.attachment

属性类型描述
typestring值必须是 template
payloadpayload常规模板

message.attachment.payload

属性类型描述
template_typestring值必须为 list
top_element_stylestring*可选。 设置第一个列表项的格式。Messenger 网页客户端目前仅呈现compact 格式。 默认compact:呈现无格式的列表项。 large:将第一个列表项呈现为封面项。
buttonsbutton[]可选。 显示在列表底部的按钮。最多支持 1 个按钮;接受与 上述快速回复按钮*相同的属性
elementselement[]描述列表中各项目的一组元素。 要求最少 2 个元素。最多支持 4 个元素。
sharableBoolean*可选。 设置为 true,可为模板消息启用 Messenger 原生分享按钮。默认为 false

message.attachment.payload.elements

属性类型描述
titlestring显示为列表项标题的字符串。 不超过 80 个字符。如果标题跨越太多行,则可能会被截断。 元素也必须至少设置 image_urlsubtitle 之一。
subtitle字符串*可选。 显示为列表项副标题的字符串。不超过 80 个字符。如果副标题跨越太多行,则可能会被截断。 元素必须至少设置 image_urlsubtitle 之一。
image_url字符串*可选。 要显示在列表项中的图片网址。 元素必须至少设置 image_urlsubtitle 之一。
default_actionbutton*可选。接受与 上述快速回复按钮相同的属性,指定用户轻触列表项时要执行的默认操作。 仅当 messenger_extensions 属性设置为 true 时允许使用
buttonsbutton[]*可选。* 要显示在列表项中的按钮。最多支持 1 个按钮
Message message = new Message();
Element[] elements = new Element[]{
    new Element().setTitle("AnimateScroll").setSubtitle("A jQuery Plugin for Animating Scroll.")
        .setImageUrl("https://plugins.compzets.com/images/as-logo.png")
        .setDefaultAction(new Button().setType("web_url").setMessengerExtensions(true)
                          .setUrl("https://plugins.compzets.com/animatescroll/")),
    new Element().setTitle("Windows on Top").setSubtitle("Keeps a specific Window on Top of all others.")
        .setImageUrl("htt ps://plugins.compzets.com/images/compzets-logo.png")
        .setDefaultAction(new Button().setType("web_url").setMessengerExtensions(true)
                          .setUrl("https://www.compzets.com/view-upload.php?id=702&action=view")),
    new Element().setTitle("SimpleFill").setSubtitle("Simplest form filler ever.")
        .setImageUrl("https://plugins.compzets.com/simplefill/chrome-extension/icon-64.png")
        .setDefaultAction(new Button().setType("web_url").setMessengerExtensions(true)
                          .setUrl("https://plugins.compzets.com/simplefill/"))
};


1、默认首列覆盖文本的封面图像
message.setAttachment(new Attachment().setType("template").setPayload(new Payload()
				.setTemplateType("list").setElements(elements)))
2、无格式列表展示

差别正如属性top_element_style 为compact

message.setAttachment(new Attachment().setType("template").setPayload(new Payload()
				.setTemplateType("list").setElements(elements)
				.setTopElementStyle("compact")))

3)按钮模版(button)

参数解释(button)

message.attachment

属性类型描述
typestring值必须是 template
payloadpayload常规模板

message.attachment.payload

属性类型描述
template_typestring值必须是 button
textstringUTF-8编码的文本,最多640个字符。文本将出现在按钮上方。
buttonsbutton[]可选。 显示为号召性用语的1-3个按钮集合;接受与 上述快速回复按钮*相同的属性
1、一行Text说明后,排列按钮
Message message = new Message();

Button[] buttons = new Button[]{
    new Button().setType("web_url").setUrl("http://blog.ramswaroop.me").setTitle("JBot Docs"),
    new Button().setType("web_url").setUrl("https://goo.gl/uKrJWX").setTitle("Buttom Template")
};


message.setAttachment(new Attachment().setType("template").setPayload(new Payload()
				.setTemplateType("button").setText("These are 2 link buttons.").setButtons(buttons)))

2、主页欢迎讯息

在这里插入图片描述

图示开始按钮及欢迎语: 参考链接
Tips: 需要在主页开启问候语后生效
多言语列表支持地区

//【设置开始按钮的方法】
//这里"开始"代表点击后返回给服务器的载体讯息
setGetStartedButton("开始");
//【设置问候语的方法】
//可配置参数
//{{user_first_name}}
//{{user_last_name}}
//{{user_full_name}}
//可兼容多言语
setGreetingText(new Payload[]{new Payload().setLocale("default").setText(greetEn),
					new Payload().setLocale("zh_CN").setText(greetSc),
					new Payload().setLocale("zh_HK").setText(greetTc),
					new Payload().setLocale("en_US").setText(greetEn)});
//例如:greetSc 值为:你好,{{user_full_name}},歡迎來到demo

四、不基于第三方直接偷懒(憨憨的行为)

等我有空就脑抽作

持续更新中(如果记得的话)~~

五、FB针对其他拓展性功能支持

1、支持集成聊天浮动窗口

相当于在自己的网站集成一个图标,点击即可唤起facebook,可设置为需要登录或游客形式交互。
详细链接插件集成

2、支持帖子回复

相当于发表的文章内容评论讯息等回复。
值得注意的是,截至2022.4.28,官方描述为仅7天内的讯息可回复
详细链接文帖回复

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Facebook 的接口调用可以使用 Java 编程语言来实现。Java 是一种广泛应用于企业级应用开发的编程语言,对于网络应用的开发具有优秀的支持和丰富的库和框架。 要使用 Facebook 的接口调用 Java,首先需要使用 Facebook 开发者平台创建一个应用程序。在创建应用程序后,可以获取一个应用程序标识符和密钥,这些用来作为身份验证和授权调用 Facebook 的 API。 接下来,你可以使用 Java 编程语言来发送 HTTP 请求到 Facebook 的服务器,并使用获得的应用程序标识符和密钥进行身份验证。可以使用 Java 的网络库,如 Apache HttpClient,来轻松地完成这些操作。 一旦完成身份验证,就可以开始调用 Facebook 的不同 API。你可以使用 Java 编程语言发送 GET 或 POST 请求到相应的 API 端点,并处理返回的 JSON 或 XML 格式的数据。可以使用 Java 的 JSON 解析库,如 Jackson 或 Gson,来解析返回的数据以获取所需的信息。 例如,你可以使用 Java 调用 Facebook 的图像 API 来获取用户的头像信息。你可以发送一个 GET 请求到 "https://graph.facebook.com/{user_id}/picture",并将用户的 id 替换为实际的用户 id。然后,你可以将返回的图像数据保存到本地或在应用程序中显示。 总结来说,要在 Java 中调用 Facebook 的接口,你需要创建一个 Facebook 应用程序,使用 Java 的网络库发送 HTTP 请求进行身份验证,并使用 JSON 解析库解析返回的数据。通过这种方式,你可以利用 Java 的强大功能来开发与 Facebook 相关的应用程序或集成功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值