Запрос API, который обходит пользователя - возможно? - PullRequest
0 голосов
/ 31 марта 2020

Новый для кодирования и борьбы с Netatmo API. Я просто хочу загрузить общедоступные данные, используя их API, но проблема в том, что предоставленная информация предназначена только для разработчиков приложений, которые хотят, чтобы клиенты Netatmo давали приложению разрешение получать свои данные. Я просто хочу использовать область getpublicdata. Вот шаги, описанные на их веб-сайте: Шаг 1 - Перенаправьте пользователя в диалоговое окно Netatmo OAuth2

Перенаправьте пользователя на URL авторизации API. Наша платформа проверит подлинность пользователя и попросит его подтвердить, что он согласен с приложением, обращающимся к его данным.

Метод: POST

Пример запроса

https://api.netatmo.com/oauth2/authorize?
    client_id=[YOUR_APP_ID]
    &redirect_uri=[YOUR_REDIRECT_URI]
    &scope=[SCOPE_SPACE_SEPARATED]
    &state=[SOME_ARBITRARY_BUT_UNIQUE_STRING]

Если URL обратного вызова вашего приложения статически настроено в настройках, параметр redirect_uri может быть опущен. Если он присутствует, он должен соответствовать статически определенному. Параметру Response_type также может быть присвоено значение «code», но это поле не является обязательным, поскольку оно устанавливается по умолчанию непосредственно нашей службой. Чтобы обеспечить безопасность процесса, необходимо сгенерировать и сохранить параметр состояния, уникальный для этого запроса. , Параметр состояния - произвольная строка, которую вы выбираете. Он будет передан обратно вашему приложению в качестве параметра redirect_uri, когда пользователь завершит процесс аутентификации. Прежде чем доверять ответу об авторизации, вы должны убедиться, что возвращенный параметр состояния соответствует параметру, отправленному в запросе. Использование параметра состояния помогает предотвратить подделку межсайтовых запросов.

Шаг 2 - пользователю предлагается Авторизуйте ваше приложение

Примечание. Если пользователь еще не вошел в свою учетную запись Netatmo, ему будет предложено войти в систему.

Шаг 3 - Пользователь перенаправлен в ваше приложение

Теперь пользователь перенаправлен на URL-адрес обратного вызова, определенный в настройках приложения, или на redirect_uri, указанный в запросе. Если они авторизовали приложение, они будут перенаправлены с дополнительными параметрами:

[YOUR_REDIRECT_URI]?state=[YOUR_STATE_VALUE]code=[NETATMO_GENERATED_CODE]

Если они не авторизовали приложение, дополнительными параметрами будут «error = access_denied»

Шаг 4 - Получить токен доступа с кодом

мой код пока

import requests
import json

response = requests.post(r'https://api.netatmo.com/oauth2/authorize?',
    data = {"client_id":"5e8xxxxxxxxxxxxxxxxxxx",
    "redirect_uri" : r"https://github.com/andyspeak",
    "scope": "getpublicdata",
    "state" : "blahbingbobbz"})

print(response.status_code)

Я получаю код ошибки 302, что означает перенаправление? а также он говорит, что client_id является недействительным. Но есть и проблема получения авторизации пользователя.

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