2017-02-03更新: openshift 不能开其他端口导致发消息的插件不能加载,App上登录扫码停止等事件通知好像也有问题,还是用Arukas的免费docker比较好(镜像:'rastasheep/ubuntu-sshd',需要安装'make'以及'libssl-dev'再安装模块)

GcmForMojo 是一个微信或QQ消息推送(谷歌的FCM推送方案)APP。

简单的说是通过服务器登录发送接收到的聊天消息到谷歌服务器,接着推送到App,实现类似苹果的云推送,不用打开app也能收到消息。

由于需要服务器搭建服务端,特地买个VPS来搭服务端的话太浪费了,自己电脑啥的终究有点麻烦且不是长久之计,于是尝试了openshift发现很适合。

本教程使用Ubuntu虚拟机(之前写Windows教程发现很多麻烦问题)

写的有点罗嗦,排版也不太好,还请见谅。

注册

新注册的帐号是新的控制台,现在还不知道怎么搞
(╯-_-)╯~┴—┴

旧版往下看

添加应用及公钥

添加应用

登录Web控制台后添加应用(Add Application),找到"Perl 5.1.0"

然后这些东西都不用改直接 点创建应用(Create Application)。

添加公钥

Ubuntu终端下ssh-keygen 生成密钥对,一路回车。

打印并复制公钥

回到openshift,进入Settings,添加公钥(Add a new key),Key name随便填,下面的框填写刚才复制的公钥。

接下来就可以连接服务器了。

服务端程序

git提交程序

回到应用复制这个地址

终端下git clone <刚才的地址>

先安装两个perl模块,openshift只需要将依赖的模块名写进一个文档push的时候会自动安装。

进入.openshift目录,修改cpan.txt,添加两行。

Mojo::Weixin
Mojo::Webqq

接着写一个用以运行的perl程序(以微信为例,记得修改其中的令牌ID)

    use Mojo::Weixin;

    $tmpdir_dir = './';
    $qrcode_path = $tmpdir_dir.'weixin.png';

    my $client = Mojo::Weixin->new(
        tmpdir=>$tmpdir_dir,
        cookie_dir=>$tmpdir_dir,
        qrcode_path=>$qrcode_path,
    );

    print "Logining.../nIf No Succeed Info in 5s Please Scan QRCode/n";
    $client->on(login=>sub{
        print "/nLogin Succeed/n";
    });
    $client->on(ready=>sub{
        print "WebWeiXin OK/n";
        unlink($qrcode_path);
    });

    $client->load("ShowMsg");$client->load("GCM",data=>{
        api_url => 'https://gcm-http.googleapis.com/gcm/send',
        api_key=>'AIzaSyB18io0hduB_3uHxKD3XaebPCecug27ht8',
        registration_ids=>["这里填写你的令牌ID(手机App显示令牌)"],
    });

    $client->run();

然后提交到服务器

    git add .
    git commit -m "first commit"
    git push

第一次需要等一会儿,

运行程序

ssh 连接服务器(本来想action hook直接就能运行,有点问题还得老老实实自己运行)

进入目录 nohup执行刚才放进去的程序Weixin.pl(nohup执行后再按一次回车即可后台运行)

如果是第一次登录或是cookie失效,可以用浏览器访问你的应用查看二维码并扫码登录。

nohup.out 可以查看运行日志(unicode编码)

注意:cookie也可以获取到,所以不要将自己的地址暴露出去。也可以修改代码改变保存目录,太懒没去看文档。。。

至此应该是可以用了,可以和可爱的小冰聊天测试 ≧▽≦ 。