Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wordpress与GitHub同步问题 #8

Closed
CoolMusk opened this issue Feb 27, 2018 · 35 comments
Closed

wordpress与GitHub同步问题 #8

CoolMusk opened this issue Feb 27, 2018 · 35 comments
Labels

Comments

@CoolMusk
Copy link

Hello,请问使用插件后,WordPress多久与GitHub同步一次?只能手动操作插件么?

@CoolMusk
Copy link
Author

提示 {"success":false,"data":[{"code":"invalid_headers","message":"\u9a8c\u8bc1 webhook \u4e8b\u4ef6\u5931\u8d25\u3002"}]}
message信息是:验证webhook事件失败

@litefeel
Copy link
Owner

@CoolMusk 在github中修改或在wordpress中修改,会立刻同步,修改的那篇文章,如果需要导出到导入,需要手动操作

验证webhook事件失败
注意要选json
image

@CoolMusk
Copy link
Author

image
image
image

感谢回复,我设置的是json格式的。但是还是遇到这个问题。
步骤是先在WordPress上设置好授权和密码,然后再来github项目上添加webhook。

但是我手动导入导出是正常的。
每次github更新,webhook都提示 “验证webhook失败”。
@litefeel 请问有其他项可供检查吗?

@litefeel
Copy link
Owner

@CoolMusk
该插件只支持 ping 和 push 事件, 如果不是这两个事件,就会提示 验证webhook事件失败。

你看看收到 验证webhook事件失败 的时候的, request 信息,看看是什么 事件。

@CoolMusk
Copy link
Author

@litefeel
header信息为:

Request URL: http://www.xxxxx.com/wp-admin/admin-ajax.php?action=wogh_push_request
Request method: POST
content-type: application/json
Expect: 
User-Agent: GitHub-Hookshot/7a06a51
X-GitHub-Delivery: f28630b2-1b99-11e8-85cb-367f84553e6a
X-GitHub-Event: push
X-Hub-Signature: sha1=xxxxxxxxx

event信息是push事件。

另外ping事件也是报验证webhook事件失败。

Request URL: http://www.xxxx.com/wp-admin/admin-ajax.php?action=wogh_push_request
Request method: POST
content-type: application/json
Expect: 
User-Agent: GitHub-Hookshot/7a06a51
X-GitHub-Delivery: e1762910-1b6e-11e8-88c1-75dc7d804cd4
X-GitHub-Event: ping
X-Hub-Signature: sha1=xxxxxxxxxxxxxxxxxxx

报错信息为:

{"success":false,"data":[{"code":"invalid_headers","message":"\u9a8c\u8bc1 webhook \u4e8b\u4ef6\u5931\u8d25\u3002"}]}

@litefeel
Copy link
Owner

是最新版本的插件吗

@CoolMusk
Copy link
Author

@litefeel
你好,是最新版本插件。
image

WordPress版本是 4.9.4

@litefeel
Copy link
Owner

这就奇怪了, 验证webhook事件失败 只能是事件类型有问题。
你再试试修改一个github上的post看看

@CoolMusk
Copy link
Author

@litefeel
你好,post我修改了,header跟之前类似。

Request URL: http://www.XXXX.com/wp-admin/admin-ajax.php?action=wogh_push_request
Request method: POST
content-type: application/json
Expect: 
User-Agent: GitHub-Hookshot/7a06a51
X-GitHub-Delivery: 2b021d84-1bc7-11e8-99ec-9a2977cf50a8
X-GitHub-Event: push
X-Hub-Signature: sha1=XXXXXXXX

返回还是失败的。
请问你觉得有什么地方我需要去自验的么?

@CoolMusk
Copy link
Author

@litefeel
你好,查看了你插件中controller.php中关于push error的处理代码。因为我不会PHP,是否我可以本地对你代码进行调试?模拟push到我webhook回调地址的请求?

@litefeel
Copy link
Owner

这个不好本地调试的

@devbanpie
Copy link

devbanpie commented Mar 3, 2018

我也是手动导入可以成功的,但是如果是push 更新的话,提示如下错误:


Request URL: https://xxx.com/wp-admin/admin-ajax.php?action=wpghs_sync_request
Request method: POST
content-type: application/json
Expect: 
User-Agent: GitHub-Hookshot/7a71d82
X-GitHub-Delivery: 3ea8cdf6-1ea1-11e8-9b15-10b09e0e2e32
X-GitHub-Event: push
X-Hub-Signature: sha1=65ae2b65a74b397c42422147a4557eaf5ca5e41d

Reponse 是Invalid Http response 400:

Cache-Control: no-cache, must-revalidate, max-age=0
Connection: Upgrade, close
Content-Length: 1
Content-Type: text/html; charset=UTF-8
Date: Sat, 03 Mar 2018 05:10:56 GMT
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Referrer-Policy: same-origin
Server: Apache
Transfer-Encoding: chunked
Upgrade: h2
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Powered-By: PHP/7.1.5
X-Robots-Tag: noindex

@litefeel
Copy link
Owner

litefeel commented Mar 3, 2018

@devbanpie 尝试先把github里的所有内容删掉,然后重新导出到github,再修改github的文章看看是否可以正常同步到wordpress

@devbanpie
Copy link

devbanpie commented Mar 3, 2018

@litefeel 感谢回复。我尝试如下操作:

  1. 清空Github 所有文章;
  2. 清空Wordpress 所有文章;
  3. 重新复制文章到Github 仓库并Push;
  4. Webhook 还是出现同样的400错误;
  5. 在Wordpress 插件里面点击import from Github
  6. 文章可以从Github 同步过来,但是在Wordpress点击编辑文章,跳转到Github 修改后,无法同步回到Wordpress的文章中。
  7. 切换到Wordpress的插件中提示,Import from GitHub failed with error: Method PUT to endpoint https://api.github.com/repos/banpie/bpblog/contents/_posts/2018-03-02-%e6%b5%8b%e8%af%95.md failed with error: Invalid request. "sha" wasn't supplied.

@devbanpie
Copy link

这边所有的Push都是红色的条,我的服务器是Cent OS,PHP 7.0,难道是阿里云和Github API通信的问题?

2018-03-03 9 44 33

@litefeel
Copy link
Owner

litefeel commented Mar 4, 2018

@devbanpie

Import from GitHub failed with error: Method PUT to endpoint https://api.github.com/repos/banpie/bpblog/contents/_posts/2018-03-02-%e6%b5%8b%e8%af%95.md failed with error: Invalid request. "sha" wasn't supplied.

这个表示wordpress 已经成功的链接到了GitHub。
wordpres想要新建一个文件,但是GitHub上已经存在改文件了。
你确认下,是否真的已经存在该文件了。

@devbanpie
Copy link

devbanpie commented Mar 4, 2018

@litefeel 谢谢反馈。我尝试删除Webhooks 在新建1个重新同步,现在正常了。

另外想请问一下我之前使用的是Jekyll 的默认YAML格式,如下:

title: "文章名称"
date: 2018-03-01
permalink: "article-name"
published: true

发现只有是使用以下的才能成功显示。

post_title: '文章名称'
post_name: "article-name"
layout: post
published: true_or_false

是否是插件只支持这个固定的YAML呢?

@devbanpie
Copy link

devbanpie commented Mar 4, 2018

还有一个问题,重制Webhook同步后,但是只能同步15篇文章(重复测试),然后Debug 信息就出现了:

- Controller::pull_posts() :同步机制已触发,正在进行导入/导出。
- 无法验证密匙。
- Method DELETE to endpoint https://api.github.com/repos/banpie/bpblog/contents failed with error: Not Found

@CoolMusk
Copy link
Author

CoolMusk commented Mar 6, 2018

@devbanpie 你好,请问你的“验证WebHook失败”的问题,是通过重新建立仓库,重新导入导出来解决的?

@devbanpie
Copy link

@CoolMusk 我是删除Webhook,在新建一个解决的。另外,想请问你的Post_date 同步会出现问题吗?

@CoolMusk
Copy link
Author

CoolMusk commented Mar 7, 2018

@devbanpie 你指的是post_date 会被WordPress的同步操作更新掉?

@devbanpie
Copy link

@CoolMusk 对啊,你不会吗?比如一开始的Github _posts文件夹中的文件YAML标注2017-01-01 08:00:00,一旦import后,仓库自己会做一个move的操作,把文档的YAML重写了,日期也修改成新的日期。

@CoolMusk
Copy link
Author

CoolMusk commented Mar 7, 2018

@devbanpie 会遇到,但并不是所有文章,只是最近更新的文章才会出现这个问题。比方post_date是2018-03-01,于今日2018-03-07更新后,同步过去,会变化,我这边是概率性,我也没看出原因。需要插件开发者帮忙了。@litefeel

@devbanpie
Copy link

@litefeel @CoolMusk 我也反馈给源插件开发者了,但是没有什么反馈。我一次性只能同步17篇,所以剩余的post不会被重写,但是一旦在点击import,没有同步的部分还是会被重写。

@CoolMusk
Copy link
Author

CoolMusk commented Mar 7, 2018

@devbanpie [捂脸] 如果你PHP OK的话,可以研究一下,我最近打算有空看下源码。或者要思考其他的方式来解决这个问题。

@devbanpie
Copy link

@CoolMusk 然而我并不太懂代码 [叹气],求大神带路 😄

@CoolMusk
Copy link
Author

CoolMusk commented Mar 7, 2018

@devbanpie 如果我找到解决办法,我就留言给你。。

@litefeel
Copy link
Owner

litefeel commented Mar 7, 2018

@devbanpie @CoolMusk
关于YAML格式,目前是这样的,不是完全与Jekyll兼容。
关于日期被重写的问题,请到 #9 讨论
关于只能同步15篇文章的问题,请到 #10 讨论

@litefeel
Copy link
Owner

litefeel commented Mar 8, 2018

@CoolMusk 更新到最新版本,看看还会出现 验证webhook事件失败 的问题吗

@CoolMusk
Copy link
Author

CoolMusk commented Mar 9, 2018

@litefeel 你好,更新了最新的插件后,在github上重建了webhook。
抛错如下:
{"success":false,"data":[{"code":"invalid_headers","message":"Failed to validate webhook event: ."}]}

@CoolMusk
Copy link
Author

CoolMusk commented Mar 9, 2018

@litefeel 你好,想问下,如何在yaml中带入文章的特色图片的设置呀?

@litefeel
Copy link
Owner

litefeel commented Mar 9, 2018

@CoolMusk
你将 writing-on-github/lib/request.php 替换为下面的文件,再试试会输出什么。
https://raw.githubusercontent.com/litefeel/writing-on-github/f1dad785760d21b7ead4c53f01b6c87889d226d0/lib/request.php

yaml里现在不支持特色图片

@CoolMusk
Copy link
Author

@litefeel
替代后,返回如下:

getallheaders
array(8) {
  ["Host"]=>
  string(14) "www.233lab.com"
  ["Accept"]=>
  string(3) "*/*"
  ["User-Agent"]=>
  string(23) "GitHub-Hookshot/7a71d82"
  ["X-GitHub-Event"]=>
  string(4) "ping"
  ["X-GitHub-Delivery"]=>
  string(36) "bda8d720-2515-11e8-9534-4a836e6a0bdf"
  ["content-type"]=>
  string(16) "application/json"
  ["X-Hub-Signature"]=>
  string(45) "sha1=569fad020b4705fa27d515896bff5b3c49bafcb0"
  ["Content-Length"]=>
  string(4) "6182"
}
{"success":false,"data":[{"code":"invalid_headers","message":"Failed to validate webhook event: ."}]}

@litefeel
Copy link
Owner

@CoolMusk 请下载最新的版本,已经解决了不能同步的问题。

@CoolMusk
Copy link
Author

@litefeel 感谢~重新试了一下,问题已经解决了。打Call。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants