我已经尝试启动并运行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
对象,但我无法超越此步骤。对我出错的地方有任何见解?
答案 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
我希望它有所帮助。