Почему эта команда twurl (запущенная на linux, golang exe c) не проходит проверку подлинности? - PullRequest
0 голосов
/ 03 мая 2020

В настоящее время я работаю над сайтом Golang (работающим в Ubuntu), который обновит статус твиттера. Я использовал проверку подлинности по ключу клиента twurl в системе, и я могу успешно обновить статус, если набираю напрямую в терминал linux. Например,

  1. ssh / putty в целевую систему
  2. введите в терминале: twurl -d 'status = это то, что в' /1.1/statuses/update.json
  3. Твиттер успешно обновлен

Когда я пытаюсь сделать то же самое через Golang exe c, твиттер выдает мне ошибку аутентификации.

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

I Я пробовал несколько разных способов форматирования статуса. При выводе вышеупомянутого statusarg на консоль показывается: 'status = Windows сработало, тестирование обновления в Ubuntu.'

Кажется, что Twurl запущен, поскольку out показывает сообщение об ошибке из twitter, {"code": 32 , "message": "Не удалось аутентифицировать вас."}. Я подозреваю, что это связано с настройкой команды ... ??? Или, может быть, интерпретация одинарных кавычек в аргументе статуса ???

1 Ответ

0 голосов
/ 03 мая 2020

Не включайте одинарные кавычки:

statusarg := "status=" + status

В Golang, "twurl" - строка, содержащая twurl. В частности, строковые данные не включают двойные кавычки. Эти кавычки являются просто Go синтаксисом для строк.

В Bash, 'status=Foo' является строкой, содержащей status=Foo. В частности, строковые данные не включают в себя одинарные кавычки. Это просто Bash синтаксис для неинтерполированных строк.

...