2019年3月

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