Microsoft wyłączył uwierzytelnienie za pomocą hasła więc automatycznie jest problem z imap_open ponieważ nie obsługuje on autentykacji za pomocą tokena. Mam poniższy skrypt za pomocą, którego jestem wstanie wyciągnąć token po zalogowaniu i to działa, natomiast utknąłem i nie mam pomysłu w jaki sposób wykorzystać ten token aby połączyć się ze skrzynką za pomocą imapa i wyciągać e-maile. Czy ktoś coś podpowie ?

  1. <?php
  2. $id_application = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  3. $secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  4. $login_url ="https://login.microsoftonline.com/XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/oauth2/v2.0/authorize";
  5.  
  6.  
  7. $_SESSION['state']= session_id();
  8.  
  9. if(isset($_SESSION['message']))
  10. {
  11. echo '<a href="?action=logout">Log Out</a>';
  12. }
  13. else
  14. {
  15. echo '<a href="?action=login">Log In</a>';
  16. }
  17.  
  18. if($_GET['action'] == 'login')
  19. {
  20. $parametrs = array ('client_id' => $id_application,
  21.  
  22. 'redirect_uri' =>'https://xxxxxxxxxxxxxxxxxxx',
  23.  
  24. 'response_type' =>'token',
  25.  
  26. 'scope' =>'https://graph.microsoft.com/User.Read',
  27.  
  28. 'state' => $_SESSION['state']);
  29.  
  30. header('Location: '.$login_url.'?'.http_build_query($parametrs));
  31.  
  32. }
  33.  
  34. if(array_key_exists('access_token', $_GET))
  35. {
  36. $curl = curl_init ();
  37.  
  38. curl_setopt ($curl, CURLOPT_HTTPHEADER, array ('Authorization: Bearer '.$_GET['access_token'],'Conent-type: application/json'));
  39.  
  40. curl_setopt ($curl, CURLOPT_URL, "https://graph.microsoft.com/v1.0/me/");
  41.  
  42. curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
  43.  
  44. $decode = json_decode (curl_exec ($curl), 1);
  45.  
  46. if(!array_key_exists ('error', $decode))
  47. {
  48. $_SESSION['message'] = 1;
  49. }