Я довольно новичок в Python/Django, но я установил REST API для одного веб-сайта (siteA.com) и хотел бы, чтобы на другом сайте (siteB.com) для вызова этого API и отображения некоторых результатов. Для этого я добавил Django REST Framework и Django Auth2 Provider на сайтA. Теперь я могу вызвать API с помощью локон, чтобы получить маркер доступа:API-вызов с одного сайта Django на другой
curl -X POST -d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=password&username=USERNAME&password=PASSWORD" http://www.siteA.com/oauth2/access_token [1]
Это дает ответ я хочу:
{"access_token": "72x63615xe29f4xfdadexbcd77x27b5fx0bceexx", "scope": "read", "expires_in": 86399, "refresh_token": "5fx80dx320cx3abe7d0x27d5f1x64e7x413x0f70"}
Используя маркер доступа я получаю теперь я могу назвать API:
curl -v -H "Authorization: Bearer 72x63615xe29f4xfdadexbcd77x27b5fx0bceexx" "http://www.siteA.com/api/?q=SOMESTRING&per_page=3&page=1&sort=random" [2]
Который дает мне ответ JSON с 3 результатами для строки запроса «SOMESTRING».
Что все работает нормально, но теперь я хочу делать эти звонки с сайта site.com. Другими словами, я хочу сделать страницу, которая, если вызов с определенным запросом на seach сначала проверяет, есть ли токен доступа, как в [1], а затем получить результаты поиска [2] и показать их в формате JSON. Я просто не знаю, как это сделать. Пытался использовать OAuth2 от request_oauth2, но просто не знаю, как правильно преобразовать операторы curl в Python. Любая помощь?
Отъезд urrlib2 mate. –
Я вижу, что сделал ошибку в предыдущем комментарии. его urllib2 не urrlib2: P –
Я попробовал его с OAUth первым и не смог, затем попробовал его с помощью запросов, но, наконец, с urllib2. JUst эти 3 строки выполняют большую часть работы: 'req = urllib2.Request (url, query_string); file = urllib2.urlopen (req); result = ast.literal_eval (file.read()); ' –