登录
首页 >  Golang >  Go问答

为何 twurl 命令(在 Linux 中通过 golang exec 运行)未经过授权验证?

来源:stackoverflow

时间:2024-02-28 08:00:27 440浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《为何 twurl 命令(在 Linux 中通过 golang exec 运行)未经过授权验证?》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我目前正在开发一个 golang 网站(在 ubuntu 上运行),该网站将更新 twitter 状态。我在系统上使用了 twurl 客户密钥身份验证,如果直接在 linux 终端中输入,我可以成功更新状态。例如

  1. 通过 ssh/putty 进入目标系统
  2. 在终端中输入:twurl -d 'status=is this thing on' /1.1/statuses/update.json
  3. twitter 状态已成功更新

当我尝试通过 golang exec 执行相同操作时,twitter 给我一个身份验证错误。

func UpdateMainStatus(status string) {
    statusarg := `'` + "status=" + status + `'`
    out, err := exec.Command("twurl", "-d", statusarg, "/1.1/statuses/update.json").Output()
}

我尝试了几种不同的方法来格式化 statusarg。将以上 statusarg 打印到控制台显示:“status=windows 已工作,在 ubuntu 上测试更新。”

twurl 似乎确实在运行,因为显示了来自 twitter 的错误响应,{"code":32,"message":"无法验证您的身份。"}。我怀疑这与命令的设置有关......???或者也许是状态参数中单引号的解释???


解决方案


不要包含单引号:

statusarg := "status=" + status

在golang中,"twurl"是包含twurl的字符串。特别是,字符串数据不包含双引号。这些引号只是字符串的 go 语法。

在 bash 中,'status=foo' 是包含 status=foo 的字符串。特别是,字符串数据不包含单引号。这些只是未插值字符串的 bash 语法。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>