如何使用 azure 驗證和 php 編碼抓取電子郵件
P粉786800174
P粉786800174 2023-09-05 14:58:32
0
1
510

我們有一個用 PHP 編寫的應用程序,用於從電子郵件 ID 中獲取收件匣電子郵件,該應用程式運行良好。這是一個基本的身份驗證應用程式。最近他們已經停止了基本身份驗證,因此我們在 Azure 上建立了一個帳戶來獲得新的身份驗證,並基於此我們想要抓取電子郵件。

我們已經使用應用程式 ID 和秘密 ID 建立了一個代碼。 當我們打開頁面時,它會重新導向到登入頁面,這就是問題所在。 我們需要它自動登入並抓取電子郵件。 這是一個 cron 進程,因此每次我們需要輸入登入時,抓取電子郵件並不是解決方案。

https://xxxx.co/projects/test.php?action=login 當我們打開此連結時,它會要求登入。我們不希望這樣,因為我們已經放置了應用程式 ID、秘密 ID 和租戶 ID 等所有資料。

如果我們已經登入微軟,那麼它不會要求登錄,而是透過電子郵件抓取頁面。但是當我們以隱身模式開啟時,它會要求登入。我們如何刪除它並直接獲取電子郵件

       MS OAuth2.0 示範
"; if (isset ($_SESSION['msatg'])){ echo "

已驗證".$_SESSION["uname"]."


”; echo '

註銷

'; } //如果會話結束 else echo '

您可以登入與 Microsoft

'; if ($_GET['操作'] == '登入'){ $params = array ('client_id' => $appid, 'redirect_uri' => 'https://xxx.co/projects/test.php', 'response_type' => '令牌', '範圍' => 'https://graph.microsoft.com/User.Read', '狀態' => $_SESSION['狀態']); header('位置:'.$login_url.'?'.http_build_query($params)); } 迴聲' <腳本> url = window.location.href; i=url.indexOf(“#”); 如果(我> 0){ url=url.replace("#","?"); window.location.href=url;} '; if (array_key_exists ('access_token', $_GET)) { $_SESSION['t'] = $_GET['access_token']; $t = $_SESSION['t']; $ch=curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADER, array('授權:承載'.$t, '內容類型:application/json')); curl_setopt($ch,CURLOPT_URL,「https://graph.microsoft.com/v1.0/me/」); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $rez = json_decode(curl_exec($ch), 1); if (array_key_exists ('錯誤', $rez)){ var_dump($rez['錯誤']); 死(); } 別的 { $_SESSION['msatg'] = 1; //授權並驗證 $_SESSION['uname'] = $rez['displayName']; $_SESSION['id'] = $rez['id']; } 捲曲關閉($ch); header('位置:https://xxxx.co/projects/test.php'); } if ($_GET['操作'] == '註銷'){ 取消設定 ($_SESSION['msatg']); header('位置:https://xxxx.co/projects/test.php'); }

當我們打開此程式碼時,它會要求登入。我們不希望這樣。將使用 php 直接提取電子郵件

P粉786800174
P粉786800174

全部回覆 (1)
P粉426780515

使用OAuth 2.0授權對使用者進行身份驗證並取得存取令牌。並使用它來呼叫Microsoft Graph API來檢索使用者的電子郵件。

對於您的問題,在您未登入時可能會出現登入頁面。要解決此問題,您需要使用OAuth 2.0 用戶端憑證而不是授權程式碼。 p>

使用客戶端憑證取得存取令牌的範例程式碼。

$tenantId = 'your-tenant-id'; $client_id = 'your-client-id'; $client_secret = 'your-client-secret'; $resource = 'https://graph.microsoft.com'; $tokenEndpoint = 'https://login.microsoftonline.com/' . $tenantId . '/oauth2/token'; $data = array( 'grant_type' => 'client_credentials', 'client_id' => $client_id, 'client_secret' => $client_secret, 'resource' => $resource ); $options = array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($data) ) ); $context = stream_context_create($options); $result = file_get_contents($tokenEndpoint, false, $context); $token = json_decode($result)->access_token;

取得存取權杖後,您可以使用它來呼叫Microsoft Graph API並檢索使用者的電子郵件。

檢索使用者電子郵件的範例程式碼。

php $graphApiEndpoint = 'https://graph.microsoft.com/v1.0/me/messages'; $options = array( 'http' => array( 'header' => "Authorization: Bearer $token\r\n" . "Content-type: application/json\r\n", 'method' => 'GET' ) ); $context = stream_context_create($options); $result = file_get_contents($graphApiEndpoint, false, $context); $messages = json_decode($result)->value;

有關詳細信息,請參閱MSDoc1MSDoc2

    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!