Почему curl не работает, когда я пытаюсь получить адрес электронной почты человека из LinkedIn - PullRequest
0 голосов
/ 10 июля 2020

В настоящее время я работаю над приложением, которое позволяет пользователям входить в систему через LinkedIn. Я хотел бы получить электронную почту пользователя и в настоящее время тестирую его через терминал, используя сначала curl. Из документации API LinkedIn я знаю, что мне нужно ПОЛУЧИТЬ с этого URL-адреса:

https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))

, чтобы получить электронную почту пользователя. Я уже запросил у своего пользователя разрешение на получение его адреса электронной почты. Команда curl, которую я выполняю, выглядит следующим образом:

curl https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~)) -H "Authorization: Bearer access_token"

где access_token на самом деле является фактическим токеном доступа. Однако каждый раз, когда я запускаю это на терминале, я всегда получаю такой ответ:

[1] 31166
zsh: no matches found: https://api.linkedin.com/v2/emailAddress?q=members
zsh: unknown file attribute: h
[1]  + exit 1     curl https://api.linkedin.com/v2/emailAddress?q=members

Это странно, учитывая, что мой запрос:

https://api.linkedin.com/v2/me

работает отлично. Кто-нибудь знает, что может быть потенциальной причиной этого?

1 Ответ

0 голосов
/ 10 июля 2020

& в URL-адресе анализируется как оператор оболочки, выполняющий curl в фоновом режиме. Вам нужно избежать этого, что проще всего сделать, указав весь URL-адрес.

curl 'https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))' \
     -H "Authorization: Bearer access_token"

Более полно, после того, как & проанализировано как терминатор команды, у вас есть следующие две команды:

curl https://api.linkedin.com/v2/emailAddress?q=members & 
projection=(elements*(handle~))' -H "Authorization: Bearer access_token"

В обоих случаях у вас есть символы, которые приводят к zsh попытке создания имени файла .

  1. ? в первом
  2. * во втором

Первая команда выполняется в фоновом режиме и сразу же завершается ошибкой, потому что zsh обрабатывает несоответствующий шаблон как ошибку, а не буквальный текст, как bash по умолчанию.

Вторая команда завершается ошибкой еще до попытки сопоставления. ( вводит серию квалификаторов glob, но h не является признанным квалификатором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...