Facebook集成login后服务端验证

前端按照官方文档集成即可,在服务端有两个需要注意
1:input_token
这个是前端登录后生产的,需要在服务端验证
例如:EAAFpEDZA6uWIBAAQpstTiZB0zKWRdMDQUaUPJFGO0PqMhZBhVfbm3ZAabFXssHDuWfqZC0RoN78IG3Gbe48ifJAHrQCZA1v2DhPRiHJ6SNhCpWGt8hx3V4eouDJ9fdcxkkm9aayA1CIYEgYVDzePEza6qSLuc4JmZBBJG39GABkYAQov1eisVBMQ36gbL9WB8Xyw8UCFAVIYdJhgMwRln2I
2:access_token
这个是S2S的一个权益校验字段,规则是A+B+C
A=App ID
B=%7C
C=App Secret
例如:396993331116666%7C123f4fa90ceddcd6acea4e9d362e7407
如果请求是成功的,返回为:

{
    "data": {
        "app_id": "396993331116666",
        "type": "USER",
        "application": "CIIKA",
        "data_access_expires_at": 1560943190,
        "expires_at": 1553173200,
        "is_valid": true,
        "scopes": [
            "public_profile"
        ],
        "user_id": "156563228685666"
    }
}

如果出现测试用户可以登录,其它用户无法登录,一般会是两个情况:
1:是这个app没有上线,需要把状态改成上线
2:access_token和input_token写反了,正常讲,用户传过来的应该是access_token,按照上面正常顺序调用即可。

Facebook发送媒体模板和设置域名白名单

facebook instant games 的召回机器人的媒体模板支持图片,gif图和视频,但是不是给一个普通的地址,而是先上传到facebok,产生一个文件ID,在发送召回的时候直接使用这个ID即可。
1:上传文件
https://graph.facebook.com/v2.6/me/message_attachments?access_token=<PAGE_ACCESS_TOKEN>

{
  "message":{
    "attachment":{
      "type":"image", 
      "payload":{
        "is_reusable": true,
        "url":"http://www.messenger-rocks.com/image.jpg"
      }
    }
  }
}

产生一个ID
{
"attachment_id":"1857777774821032"
}
2:发送召回信息
https://graph.facebook.com/v2.6/me/messages?access_token=<PAGE_ACCESS_TOKEN>

{
  "recipient":{
    "id":"<PSID>"
  },
  "message":{
    "attachment": {
      "type": "template",
      "payload": {
         "template_type": "media",
         "elements": [
            {
               "media_type": "<image|video>",
               "attachment_id": "<ATTACHMENT_ID>"
            }
         ]
      }
    }    
  }
}

另外在发送其它召回的时候,会遇到CSP限制,只能使用FACEBOOK认证的几个域名(且没有被标记),可以通过whitelisted_domains来设置,通常的报错 为:
The URL provided is not whitelisted for messenger extensions
https://graph.facebook.com/v2.6/me/thread_settings?access_token=<PAGE_ACCESS_TOKEN>

{
 "setting_type" : "domain_whitelisting",
  "whitelisted_domains" : ["http://ciika.com"],
  "domain_action_type": "add"
}

利用开源simplechat搭建在线客服

在线客服,或者在线留言,基本都是收费的,我在github找到了一个schat,官网地址为:https://www.simplechat.support
GITHUB地址为:https://github.com/juliancwirko/s-chat-app。
首先安装最新版的nodejs
安装meteor,官方GIT为:https://github.com/meteor/meteor
curl:https://install.meteor.com | sh
依次安装
git clone https://github.com/juliancwirko/s-chat-app.git
cd s-chat-app
npm install
准备mailgun账号,好像不准备也可以
meteor --settings settings.json --allow-superuser
如果没有settings settings.json,需要新建
启动后,配置一下nginx

upstream chat {
    server 127.0.0.1:3000;
}
server {
    listen 443 ssl;
    ssl on;
    ssl_certificate /opt/ssl/214768358400024.pem;
    ssl_certificate_key /opt/ssl/214768358400024.key;
    server_name chat.ciika.com;
    location / {

        proxy_pass http://chat;
    }
    location /websocket {
        proxy_pass http://chat;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

}

1111.png
2222.png

网站被google标记为恶意软件的解决办法

公司网站突然被google墙了,打开网页就报Google has detected harmful content on some of your site’s pages。这些被浏览器安全定位为有恶意软件的网站,通常会封一系列的二级域名。
解决方法也很简单:
1:清理网站可能存在的安全问题
2:去google console里面提交重新审核网站的安全性(需要验证你是网站的所有者)
3:去google safebrowsing 提交重新认证,https://safebrowsing.google.com/safebrowsing/report_error/?hl=zh-Hans,这一步不是必须。
11111.png

成功后
2222.png
安全问题就解决了
当然也有其它的病毒存放中心,也可以一并去申请验证。
如果网站被标记,在facebook开发者里面填写这些网址也会通不过验证。

java过滤emoji表情

由于在做搜索的时候emoji的表情并不需要,所以需要过滤掉

import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class EmojiFilter implements Filter {
 
    @Override
    public  String filter(String str) {
        
        if(str.trim().isEmpty()){
            return str;
        }
        String pattern="[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]";
        String reStr="";
        Pattern emoji=Pattern.compile(pattern);
        Matcher  emojiMatcher=emoji.matcher(str);
        str=emojiMatcher.replaceAll(reStr);
        return str;
    }
 
}