Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> logowanie do aplikacji za pomocą Tokena
inomi13
post
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 16.08.2017

Ostrzeżenie: (0%)
-----


Do tej pory miałem zadanie cron, które wykonywało się raz dziennie i pobierało zawartość skrzynki za pomocą imap_open. W związku z wyłączeniem przez Microsoft uwierzytelnienia za pomocą hasła oraz że PHP nie posiada wbudowanej funkcji obsługującej Oauth2 w imapi'e skorzystałem z gotowego rozwiązania https://github.com/Webklex/php-imap i loguje się za pomocą Oauth2.

Problem polega na tym że ważność tokena to 1 godzina więc zadanie cron w tym wypadku odpada. Zrobiłem partyzanckie rozwiązanie tzn. loguje się przez przeglądarkę do konta Microsoft, następnie w sesji przesyłam otrzymany get adres e-mail oraz token do pliku konfiguracyjnego php-imap, a następnie dodałem meta
  1. <meta http-equiv="refresh" content = "3600" />
, które odświeża stronę przed wygaśnięciem tokena.

Proszę o sugestie jak powinno to sensownie działać, może odświeżenie tokena...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
inomi13
post
Post #2





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 16.08.2017

Ostrzeżenie: (0%)
-----


Po wywołaniu poniższego kodu i zalogowaniu kontem Microsoft, wyciągam z URL'a token, który następnie obrabiam Curl'em, a następnie dekoduje je za pomocą json_decode.

Poniższy URL zawiera ważność tokena expires_in, więc bez odświeżenia tokena logout nastąpi po 1 godzine. Pytanie do znawców, w którą stronę iść aby wygenerować refresh tokens? Jeżeli ktoś ma jakieś przykłady to też chętnie przyjmę do analizy.


https://xxxxxxxxxxx?access_token=zb2Z0LmNvbSIsInV0aSI6Im9QRG9YajFrZVVDXXXXXX&token_type=Bearer&expires_in=4750&scope=https%3a%2f%2foutlook.office.com%2fIMAP.AccessAsUser.All+https%3a%2f%2foutlook.office.com%2fUser.Read&state=7f72451bd636d3c3d2030exxxxxxxx&session_state=4935654d-c68f-4df1-bc0d-xxxxxxxxxx



  1.  
  2. $appid = "XXXXXXXXXXXXXXXXXXX";
  3. $secret = "XXXXXXXXXXXXXXXXXXX";
  4. $loginUrl ="https://login.microsoftonline.com/XXXXXXXXXXXXXXXX/oauth2/v2.0/authorize";
  5.  
  6. $_SESSION['state'] = session_id();
  7.  
  8. echo '<a href="?action=login">Zaloguj</a>';
  9.  
  10. if($_GET['action'] == 'login')
  11. {
  12. $params = array ('client_id' => $appid,
  13.  
  14. 'redirect_uri' => 'https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  15.  
  16. 'response_type' => 'token',
  17.  
  18. 'scope' => 'https://outlook.office.com/IMAP.AccessAsUser.All',
  19.  
  20. 'state' => $_SESSION['state']);
  21.  
  22. header ('Location: '.$login_url.'?'.http_build_query ($params));
  23. }


Ten post edytował inomi13 9.11.2022, 19:45:09
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 18:34