有时候闲着没事的时候会在手机上写一些短文,一般都是锤子便签写的,然后等有电脑了发到电脑上再发布到博客上做个备忘吧。有时候就想要是能在手机上直接完成一些简单的功能就好了。于是有了这个半成品。

为啥说是半成品呢,因为workflow没办法post想要的数据,ghost api要求post的数据用workflow构造不出来,也可能是方法不对。


先记录一下Ghost API的一些记录后面用Python实现一下

参考文档
有以下几个步骤:

  • 客户端认证(Client Authentication)
  • 用户认证(User Authentication)
  • 利用api增删查更

客户端认证

如果只是需要查看数据,那有客户端认证就可以了。需要配置client_idclient_secret
参考文档

Ghost后台启用public api

labs.png

client_trusted_domains表中添加一条

以sqlite3为例
$ sqlite3 content/data/ghost.db #链接数据库

$ select * from clients; #查询一下clients表

$ insert into client_trusted_domains (uuid, client_id, trusted_domain) values ('<uuid>', '<ghost-frontend id>, '<your domain>');

  • uuid-在网站生成uuidgenerator
  • id-一般都是 2
  • client_id-ghost-frontend
  • trusted_domain-博客域名

Eg:
$ insert into client_trusted_domains (uuid, client_id, trusted_domain) values ('7137d1e7-5692-47ef-9dfa-bb8ca3fa2db6', 2, 'https://my-ghost-blog.com');

$ select * from client_trusted_domains;#检查一下

重启一下应用和数据库

打开网站首页,F12开发者工具查看Elements-->head-->script找一下会找到clientIdclientSecret记录下来,这是获取ak的凭证.

client.png

利用id和secret查看网站数据

自己构造一下就可以了,推荐PostMan.

GET /ghost/api/v0.1/posts  
client_id=ghost-frontend&client_secret=e60931364b85  

用户认证

参考文档
oauth参考

获取access_token

POST /ghost/api/v0.1/authentication/token?client_id=ghost-frontend&client_secret=ba7bb5b63d7b  
Content-Type: application/x-www-form-urlencoded  
grant_type=password&username=<username>&password=<password>&client_id=ghost-admin  
  • grant_type: password
  • username: email
  • password:
  • client_id: ghost-admin

将返回一个带有ak的json数据

{
    access_token: <access_token>
    refresh_token: <refresh_token>
    expires_in: 3600
    token_type: "Bearer"
}


- access_token: ak,1小时内有效. - refresh_token: 如果ak失效了可以用它刷新ak,24小时有效. - expires_in: 3600 - token_type: ak的类型,"Bearer".构造post数据时可以用ak参数或者用header.

有了AK参考api文档使用吧

API使用文档
post数据格式

遗憾的是workflow我没构造出来这个posts格式,有谁知道烦请告知.


哈哈,workflow还是要调试才行的,终于弄出来了.
发表博文的数据格式.

post: {  
    id: 1,
    uuid: "ec630e45-3342-4d7f-a24c-e448263c975b",
    title: "Welcome to Ghost",
    slug: "welcome-to-ghost",
    markdown: "You're live! Nice.",
    html: "<p>You're live! Nice.</p>",
    image: '/content/images/2014/12/my-image.png',
    featured: false,
    page: false,
    status: 'published',
    language: "en_US",
    meta_title: null,
    meta_description: null,
    author_id: 1,
    created_at: "2014-04-15T12:36:28.353Z",
    created_by: 1,
    updated_at: "2014-04-15T12:36:28.353Z",
    updated_by: 1,
    published_at: "2014-04-15T12:36:28.363Z",
    published_by: 1,
    tags: [{tag}]
}

构造的json文件

{
"posts":[{
    "title": "Test three",
    "markdown": "You\"re live! Nice.TOO toee",
    "status": "published",
    "tags": [{"name": "test"}, {"name": "ewrwer"}]
}]
}