Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OAuth-авторизация #27

Open
Laex opened this issue Aug 7, 2016 · 10 comments
Open

OAuth-авторизация #27

Laex opened this issue Aug 7, 2016 · 10 comments
Assignees
Milestone

Comments

@Laex
Copy link

Laex commented Aug 7, 2016

Логин и пароль можно запрашивать только при настройке аккаунта.
При настройке аккаунта надо сделать запрос:
GET dispatcher.cloud.mail.ru/o
Ответ
https://o2.mail.ru/token 94.100.180.61 500

Авторизация
POST https://o2.mail.ru/token
с postdata
client_id=cloud-win&grant_type=password&username=USERNAME%40DOMAIN&password=PASSWORD
например,
client_id=cloud-win&grant_type=password&username=laentir%40bk.ru&password=passw0rd
В случае ошибки
{"error":"invalid username or pass-word","error_code":3,"error_description":"username or password is incorrect"}
При успехе
{"ex-pires_in":3600,"refresh_token":"52b56053060b6ba1ae25168f9b62eb432880393737363830","access_token":"46b77d2d523b7f4bb87cb31d1c8049902880393737363830"}

access_token – это тот самый токен с которым надо выполнять последующие запросы
refresh_token – необходимо сохранить для того, чтобы получить access_token при следующей сессии (например, после истечения "expires_in":3600)

Повторное получение токена
POST https://o2.mail.ru/token
с postdata
client_id=cloud-win&grant_type=refresh_token&refresh_token=52b56053060b6ba1ae25168f9b62eb432880393737363830
Ответ
{"expires_in":3600,"access_token":"ae6c0ea4b741121aa536f76de2197f072880393737363830"}

Отзыв refresh_token, сначала получение ссылки
GET dispatcher.cloud.mail.ru/O
Ответ
https://o2.mail.ru/revoke 217.69.139.61 500

Сам отзыв
GET https://o2.mail.ru/revoke?refresh_token=52b56053060b6ba1ae25168f9b62eb432880393737363830
Ответ
{"status":200}

Полный список шардов
dispatcher.cloud.mail.ru/a -> 200
Answer: https://swa.mail.ru/cgi-bin/auth 94.100.180.62 500

dispatcher.cloud.mail.ru/d -> 200
Answer: https://cloclo8.datacloudmail.ru/oauth-get/ 94.100.178.108 100

dispatcher.cloud.mail.ru/e -> 200
Answer: https://cloclo8.datacloudmail.ru/video/ 94.100.178.108 3

dispatcher.cloud.mail.ru/m -> 200
Answer: https://cloclo24.datacloudmail.ru/meta/ 94.100.185.237 250

dispatcher.cloud.mail.ru/n -> 200
Answer: https://znotify.cloud.mail.ru/notify/ 94.100.180.153 80

dispatcher.cloud.mail.ru/o -> 200
Answer: https://o2.mail.ru/token 94.100.180.61 500

dispatcher.cloud.mail.ru/r -> 200
Answer: http://cloclo23.cloud.mail.ru/reginfo/ 94.100.185.233 100

dispatcher.cloud.mail.ru/s -> 200
Answer: https://s.mail.ru/ 94.100.180.6 1000

dispatcher.cloud.mail.ru/t -> 200
Answer: https://cloclo10.cloud.mail.ru/thumb/ 94.100.178.60 250

dispatcher.cloud.mail.ru/u -> 200
Answer: https://cloclo17-upload.cloud.mail.ru/upload/ 217.69.128.107 5

dispatcher.cloud.mail.ru/v -> 200
Answer: https://cloclo24.datacloudmail.ru/view/ 94.100.185.237 250

dispatcher.cloud.mail.ru/w -> 200
Answer: https://cloclo8.datacloudmail.ru/weblink/ 94.100.178.108 50

dispatcher.cloud.mail.ru/x -> 200
Answer: http://cloclo10.cloud.mail.ru/dmeta/ 94.100.178.60 250

dispatcher.cloud.mail.ru/y -> 200
Answer: http://cloclo17.cloud.mail.ru/dwl/ 217.69.128.104 250

dispatcher.cloud.mail.ru/z -> 200
Answer: http://cloclo24.cloud.mail.ru/docdl/ 94.100.185.236 250

dispatcher.cloud.mail.ru/A -> 200
Answer: http://cloclo40.cloud.mail.ru/eapi/ 217.69.128.129 250

dispatcher.cloud.mail.ru/B -> 200
Answer: https://cloud.mail.ru/ 217.69.139.5 1000

dispatcher.cloud.mail.ru/D -> 200
Answer: http://cloclo8.cloud.mail.ru/webdl/ 94.100.178.58 3

dispatcher.cloud.mail.ru/E -> 200
Answer: https://cloclo18.datacloudmail.ru/videowl/ 217.69.128.109 3

dispatcher.cloud.mail.ru/G -> 200
Answer: https://cloclo18.datacloudmail.ru/weblink/get/ 217.69.128.109 50

dispatcher.cloud.mail.ru/L -> 200
Answer: https://cloclo10.datacloudmail.ru/weblink/ 94.100.178.40 50

dispatcher.cloud.mail.ru/M -> 200
Answer: http://cloclo10.cloud.mail.ru/dmeta/ 94.100.178.60 250

dispatcher.cloud.mail.ru/O -> 200
Answer: https://o2.mail.ru/revoke 217.69.139.61 500

dispatcher.cloud.mail.ru/U -> 200
Answer: http://cloclo24.cloud.mail.ru/dupload/ 94.100.185.236 50

dispatcher.cloud.mail.ru/V -> 200
Answer: https://cloclo16.datacloudmail.ru/weblink/view/ 217.69.128.99 50

dispatcher.cloud.mail.ru/W -> 200
Answer: https://cloud.mail.ru/public/ 94.100.180.6 1000

dispatcher.cloud.mail.ru/X -> 200
Answer: https://cloclo16.cldmail.ru/ 217.69.142.216 50

@Laex Laex closed this as completed Aug 10, 2016
@pozitronik pozitronik self-assigned this Aug 10, 2016
@pozitronik
Copy link
Owner

Поддержим.

@pozitronik pozitronik reopened this Aug 10, 2016
@pozitronik pozitronik changed the title Как перестать хранить логин/пароль OAuth-авторизация Aug 26, 2016
@pozitronik pozitronik added this to the next release milestone Aug 29, 2016
@pozitronik
Copy link
Owner

pozitronik commented Aug 30, 2016

Есть ли какая-то информация, как использовать access_token после авторизации? Я более-менее понимаю, что такое AOuth2, но мне неизвестно, как передавать токены в API-запросах.

@alhymov
Copy link

alhymov commented Aug 30, 2016

Например так:
Request.CustomHeaders.AddValue( 'Authorization', FAuthorization );
Можно прямо у клиента (TRESTClient) в дизайнере выставить и на год забыть
Params = <
item
Kind = pkHTTPHEADER
name = 'Authorization'
Value = 'токен'//[OAutht ]
end>

Я не знаю, как у мэйла, а у яндекса перед токеном ставится ещё "OAutht " (с пробелом), о чём они пишут в своих доках.

@pozitronik
Copy link
Owner

Это не является стопроцентной истиной, но ситуация выглядит так, что сама по себе OAuth-авторизация для работы по WEB API ничего не даёт - авторизоваться можно, но полученные токены в этом API непригодны. Метод работает для приложений, но там другие (хотя и похожие) методы взаимодействия, поэтому дописать только авторизацию не получится - нужно писать новый класс, фактически будет ещё один плагин.
Я не потяну это по трудозатратам, поэтому не стану браться.

@yar229
Copy link

yar229 commented Dec 9, 2017

Похоже, токены от oauth пригодны.
На всех запросах еще не проверял, но вроде как вместо token= работает access_token=

@pozitronik
Copy link
Owner

Мне кажется, что я это проверял, но на всякий случай - перепроверю.

@pozitronik pozitronik reopened this Dec 9, 2017
@yar229
Copy link

yar229 commented Dec 9, 2017

Можно еще пробовать /api/m1/ вместо /api/v2/

@pozitronik
Copy link
Owner

Вот это не пробовал.
Но если это другое api - один черт, в текущую реализацию впилить не получится.

@yar229
Copy link

yar229 commented Dec 9, 2017

Опять-таки, всё еще не проверял, но на паре запросов к /api/m1 отдаёт аналогичный /api/v2 ответ в json (например, /api/m1/folder?...)

Надо проверить, может, есть еще какие-нить m2, m3, etc.

@yar229
Copy link

yar229 commented Dec 11, 2017

(тут было сообщение, что всё плохо)

Всё хорошо, запросы api/m1 работают с минимальными исправлениями.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants