即使经过身份验证,也无法POST到Trello API

时间:2016-08-03 03:06:10

标签: rest oauth trello

我已经尝试启动并运行Google Apps脚本,以便在每次表单完成时将电子表格条目移动到Trello板中。我正在测试OAuth1流程,但无论我如何进行身份验证,我都无法POST任何事情(GET请求到目前为止除了cards之外的所有事情都有效)。我已确认这些应用在我的帐户设置中具有必要的读/写权限。

出于测试目的,我通过以下URL使用Trello中的Single Use Token选项:

https://trello.com/1/authorize?name=SingleUseTesting&expiration=never&scope=read,write&key=MYKEY

授权显示该应用有权读取和写入我的帐户。

授权在我的帐户信息中心显示为已启用读/写。

我可以从以下网址获得回复:

https://api.trello.com/1/lists/LIST_ID/cards

当我使用以下内容通过API网址尝试POST时:

https://api.trello.com/1/lists/57a0b90f8b1740162702fa22/cards?&name=testing&due=null&key=MYKEY&token=MYTOKEN

我收到错误消息,说明令牌无效。我甚至竟然撤销对所有其他应用程序的访问权限,以查看它是否由于某种原因检查了错误的令牌,但结果没有变化。

我需要确保POST URI能够成功地从Google Apps Scripts发送payload对象,但我无法超越此步骤。对我出错的地方有任何见解?

2 个答案:

答案 0 :(得分:0)

解决方案不在Trello文档中(我可以找到),所以我在这里发布它以防其他人遇到同样的问题。

由于Google已放弃OAuth1库对象和方法,因此通过URL为Trello API密钥请求永久令牌要容易得多。但是,为了实现这一点,您必须在网址中将;;;###autoload (autoload 'align-backslash "this-file") 设置为using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Xml.Linq; namespace ConsoleApplication1 { class Program { const string FILENAME = @"c:\temp\test.xml"; static void Main(string[] args) { XDocument doc = XDocument.Load(FILENAME); var results = doc.Descendants().Where(x => x.Name.LocalName == "Cube" && x.Attribute("currency") != null).Select(x => new { currency = (string)x.Attribute("currency"), rate = (double)x.Attribute("rate") }).ToList(); } } }

授权请求应如下所示:

request_type

返回的页面有一个字符串,该字符串包含在token中,用于验证API密钥的写入请求。

可以在this GitHub Gist中找到完整的,有效的代码示例。

答案 1 :(得分:0)

有点晚了,但这就是我找到的。

如果您的应用程序使用GET请求,则应该有一个类似于此的获取URL:

var url="https://api.trello.com/1/boards/MY_BOARD_ID/lists";

除非另行指定,否则GET请求是Trello API中的默认方法。 对于其他三种类型(PUT,POST和DELETE),您需要将请求方法作为参数传递。

以下是我在剧本中编码的方式:

var url="https://api.trello.com/1/cards/MY_CARD_ID/pos?value=top";
var options={"method":"put"};
var response=service.fetch(url,options);

正如您在此代码片段中看到的那样,实际的请求参数通过URL和options变量中的方法传递。我的猜测是你也可以通过options变量中的payload对象发送它,但我现在懒得测试它。 Trello API文档中描述了与每个请求一起使用的方法: https://developers.trello.com/advanced-reference

我希望它有所帮助。