linux之为什么这个 twurl 命令(在 linux 上运行,由 golang exec 运行)没有经过身份验证

kevingrace 阅读:23 2025-06-02 22:19:02 评论:0

我目前正在开发一个将更新 Twitter 状态的 Golang 网站(在 Ubuntu 上运行)。我在系统上使用了 twurl 客户 key 认证,如果我直接在 linux 终端中输入,我可以成功更新状态。例如

  • ssh/putty 进入目标系统
  • 在终端输入: twurl -d 'status=is this thing on'/1.1/statuses/update.json
  • 推特状态更新成功

  • 当我尝试通过 Golang exec 执行相同操作时,twitter 给了我一个身份验证错误。
    func UpdateMainStatus(status string) { 
        statusarg := `'` + "status=" + status + `'` 
        out, err := exec.Command("twurl", "-d", statusarg, "/1.1/statuses/update.json").Output() 
    } 
    

    我尝试了几种不同的方法来格式化 statusarg。将上述状态参数打印到控制台显示:'status=Windows 工作,在 ubuntu 上测试更新。'

    Twurl 似乎确实运行了,因为 out 显示来自 twitter 的错误响应,{"code":32,"message":"Could not authenticate you."}。我怀疑它与命令的设置有关......???或者也许是状态参数中单引号的解释???

    请您参考如下方法:

    不要包含单引号:

    statusarg := "status=" + status 
    

    在 Golang 中, "twurl"是一个包含 twurl 的字符串.特别是,字符串数据不包括双引号。这些引号只是字符串的 Go 语法。

    在 Bash 中, 'status=Foo'是一个包含 status=Foo 的字符串.特别是,字符串数据不包括单引号。这些只是未插值字符串的 Bash 语法。


    标签:linux
    声明

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    关注我们

    一个IT知识分享的公众号