Github API的错误凭据

时间:2014-12-27 17:08:38

标签: git bash curl github github-api

我有以下脚本,我试图用bash测试,使用curl做一些事情,一个是创建一个新的repo,第二个 - 还没有实现 - 是从git_url获取git_url返回的json,我不确定我的parse_json函数是否允许我这样做,然后最终将示例提交消息推送到该repo。

脚本如下:

#!/usr/bin/env bash

set -eux

# Json Function: parse_json 'json string' key
function parse_json()
{
    echo $1 | sed -e 's/[{}]/''/g' | awk -F=':' -v RS=',' "\$1~/\"$2\"/ {print}" | sed -e "s/\"$2\"://" | tr -d "\n\t" | sed -e 's/\\"/"/g' | sed -e 's/\\\\/\\/g' | sed -e 's/^[ \t]*//g' | sed -e 's/^"//'  -e 's/"$//'
}

git_create_repo() {
    read -e -p  "Please enter your API Key: " apiKey
    read -e -p  "Repo Name: " repoName
    read -e -p  "Repo Description: " repoDescription

    # Use the API to create a a repository
    response=$(curl -i -H 'Authorization: token $apiKey' \
        -d '{ \
                "name": "$repoName", \
                "description": "$repoDescription", \
                "private": false, \
                "license_template": "mit" \
            }' \
        https://api.github.com/AdamKyle/repos)

    echo $response
}

git_create_repo

当我完成所有步骤时:

{
  "message": "Bad credentials",
  "documentation_url": "https://developer.github.com/v3"
}

我想知道它是否因为我用我的api键输入的方式:curl -i -H 'Authorization: token $apiKey ...'我已经尝试了"$apiKey"但是即使这样也没有用。

想法?

2 个答案:

答案 0 :(得分:2)

我这样使用它:

curl -X 'POST' -u $MY_AUTH https://api.github.com/...

其中$ MY_AUTH是在github网站上生成的。它看起来像:

export MY_AUTH="...hash...:x-oauth-basic"

答案 1 :(得分:0)

我也面临着类似的问题。
奇怪的是,在标题中使用双引号而不是单引号为我解决了这个问题。如下所示:

curl -i -H "Authorization: token $apiKey" ....