2015-08-25 5 views
0

Недавно я написал клиенту командной строки Pushbullet Linux в Bash. Я хочу разрешить пользователям предоставлять доступ к своим учетным записям Pushbullet через Oauth, но у меня проблемы. На днях я просто сделал Oauth для Google Drive API. Это было довольно просто, требуя всего несколько строк кода. Честно говоря, Oauth section in the Pushbullet API docs несколько неясен.Pushbullet Oauth с использованием Bash и curl

Позвольте мне убедиться, что я понимаю шаги, необходимые:

  1. Отправить пользователю на сайт Pushbullet с URL, сгенерированные в приложении
  2. URL должен включать: client_id и REDIRECT_URL (REDIRECT_URL указывает URL пользователь повторно -directed к после предоставления доступа к Pushbullet, в дополнение к response_type, либо маркер или код)
  3. предоставляет Пользователю или запрещает доступ к учетной записи их Pushbullet
  4. Если доступ разрешен, пользователь отправляется REDIRECT_URL
  5. Клиент должен получить access_token встроенных в REDIRECT_URL, а затем добавить access_token для всех будущих запросов

ли этот звук о праве?

Мой сценарий успешно загружает URL-адрес аутентификации в мой браузер, но когда я нажимаю «одобрить», я получаю следующую ошибку: The param 'redirect_uri' has an invalid value. Я использовал redirect_uri, указанный в разделе «клиенты» настроек Pushbullet. Итак, это: https://www.pushbullet.com/login-success/access_token=<access token>&response_type=token&scope=everything

Я использую правильный URL-адрес? Это клиент командной строки, и у меня нет домена для него. Это не имеет значения, правда?

Обязательно ли аутентификация Oauth требуется для проверки подлинности через браузер или может быть выполнена через какой-либо вызов веб-службы (как работает API GDrive)? В идеале, у меня бы завихрилось бы все, вместо того, чтобы беспокоиться о загрузке веб-браузеров.

ответ

0

Хм, я даже сделал диаграмму, но я думаю, что документы все еще нуждаются в некоторой работе. Дайте мне знать, если у вас есть предложения!

Так что, если вы хотите использовать «Client Side» поток, вы должны использовать redirect_uri из https://www.pushbullet.com/login-success, который означает, что ваш authorize_url должен выглядеть как https://www.pushbullet.com/authorize?client_id=YW7uItOzxPFx8vJ4&redirect_uri=https%3A%2F%2Fwww.pushbullet.com%2Flogin-success&response_type=token Обратите внимание, что, потому что это HTTP, вы должны UrlEncode что redirect_uri как я приклеила это здесь. Если вы все еще получаете что это неверный redirect_uri, попробуйте установить redirect_uri клиента до https://www.pushbullet.com/login-success на этой странице: https://www.pushbullet.com/#settings/clients

Я не уверен, что вы имели в виду https://www.pushbullet.com/login-success/access_token=<access token>&response_type=token&scope=everything. Возможно, вы имели в виду https://www.pushbullet.com/login-success?access_token=<access token>&response_type=token&scope=everything, но я не думаю, что есть необходимость поставить эти параметры на redirect_uri.

Одна вещь, о которой я могу думать, может быть, если я позволю https://www.pushbullet.com/login-success работать для всех клиентов, независимо от того, для чего установлен их redirect_uri, что может сделать это проще. Дайте мне знать, что не ясно, поэтому я могу это исправить.

Я не использовал специфический Google OAuth, о котором вы говорите, но мой опыт работы с google oauth в целом состоял в том, что это была самая сложная и сложная в использовании реализация OAuth, которую я когда-либо использовал. Не могли бы вы дать мне ссылку на то, что вы ссылаетесь, чтобы я мог видеть, как они сделали их OAuth намного проще в использовании?

+0

Что касается моей проблемы: я до сих пор не могу заставить OAuth работать с 'response_type = токеном'. Я получаю сообщение об ошибке типа недопустимого ответа. Я использовал redirect_uri, который вы предложили. Тем не менее, мне удалось заставить его работать с 'response_type = code', поэтому проблема решена. –

+0

Должен признаться, что я довольно новичок в этом, поэтому любая путаница с моей стороны может быть связана скорее с неопытными, чем с плохой документацией. Между прочим, диаграмма, которую вы сделали, красива и понятна. Честно говоря, документация Google невелика. Я нашел реализацию OAuth для Диска проще, потому что здесь много вопросов о API-интерфейсе Drive. Например, Google плохо справлялся с объяснением областей. Вот ссылка на документы API Google EE REST API (и следуйте содержащейся в нем ссылке на стороне клиента): https://developers.google.com/drive/web/about-auth –

Смежные вопросы