【问题标题】:Using a public access token for GitHub with Neo4j在 Neo4j 中使用 GitHub 的公共访问令牌
【发布时间】:2022-12-16 22:10:28
【问题描述】:

我正在尝试将 LOAD CSV 与存储在 GitHub 中的 CSV 文件一起使用。它适用于查看原始文件时获得的 10 分钟临时令牌,但我想要更持久的东西,因为我需要能够将其部署到多个环境。十分钟就不会削减它。

我认为私有访问令牌将是前进的方向,但是(再一次)GitHub 的质量极差的文档使这比它应该做的要难得多。

我使用 repo 和 read:org 权限设置了一个私人访问令牌,这样我就可以使用 CURL 获取我的文件,例如

curl -s https://<my_token>@raw.githubusercontent.com/<my repo>/<path>/<my file>.csv

这工作正常,我看到了我的测试文件的内容。

但是,如果我尝试导航到该 URL,我只会收到 404 错误,如果我在 Neo4j 中使用它和 LOAD CSV 语句,我会收到错误 couldn't load the external resource at:

我基本上是这样做的:

LOAD CSV WITH HEADERS FROM '<URL that worked in CURL>' AS row

......它悲惨地失败了。

在哪里:

LOAD CSV WITH HEADERS FROM '<URL for raw file from GitHub with 10 minute token>' AS row

工作正常,所以我知道我可以访问外部文件,即不在导入目录中的文件。

这只是 GitHub 的失败,还是我做错了什么?

【问题讨论】:

  • 您可以将 https:// / /myfile.csv 复制并粘贴到浏览器中吗?当您尝试浏览 csv 文件时它是否有效?
  • 是的,我试过了 - 它不起作用。所以它只有在我使用 CURL 时才有效——不知道那里发生了什么:(
  • github 存储库设置为私有设置,因此您需要令牌;如果您可以将其放入公共回购/项目中,那么您将不需要令牌。
  • 将我的文件放入公共存储库不是一种选择。我的问题不在于令牌(这很好用),这是 Neo4j 出于某种原因似乎不喜欢它的事实

标签: github neo4j


【解决方案1】:

虽然我讨厌回答我自己的问题,但我把它搁置了一段时间,没有人回来带任何有用的东西。

现在,我对公共访问令牌的了解比以往任何时候都多,但这一切都是值得的,因为它帮助我解决了这个问题。

我的主要突破是看了一集“电锯人”,其中主角被训练成猎人,被当作猎物猎杀。他一再被告知他需要停止像猎物一样思考。这让我意识到我完全错了。如果有能力的人开发了 Neo4j,我正在寻找可行的方法;相反,我需要想象如果一个白痴开发它,界面将如何工作。

戴上我的“白痴帽子”我认为可能有较低级别的 LOAD CSV 版本允许传递令牌。这没有帮助,所以我扩大了我的搜索范围以包括不同的文件格式,毕竟,一个白痴会从来没有为他们的数据库开发一致的接口?

这行得通,有一个 apoc.load.jsonParams 函数可以接受不记名令牌。从这里开始,不需要太多的工作就可以像 LOAD CSV 那样工作。

不过还有最后一个陷阱,我很快发现存储库的 URL 不能包含空格或其他非字母数字字符,但这是为成功付出的很小的代价吗?

所以这不起作用:

LOAD CSV WITH HEADERS FROM 'https://<my_token>@raw.githubusercontent.com/<my repo>/<path>/<my file>.csv' AS row...

相反,我不得不使用:

CALL apoc.load.jsonParams("https://raw.githubusercontent.com/<my repo>/<path>/<my file>.json", {Authorization: "Bearer <token>"}, null) YIELD value WITH value AS row...

【讨论】:

    猜你喜欢
    • 2021-10-20
    • 2022-01-20
    • 2012-07-24
    • 1970-01-01
    • 2012-02-19
    • 2021-09-30
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多