Azure 인증 및 PHP 인코딩을 사용하여 이메일을 긁는 방법
P粉786800174
2023-09-05 14:58:32
<p>이메일 ID에서 받은편지함 이메일을 가져오기 위해 PHP로 작성된 애플리케이션이 있는데 잘 작동합니다. 기본 인증 애플리케이션입니다. 최근에 기본 인증이 중단되었기 때문에 우리는 새로운 인증을 받기 위해 Azure에 계정을 만들었고 이를 기반으로 이메일을 가져오고 싶습니다. </p>
<p>애플리케이션 ID와 비밀번호 ID를 사용하여 코드를 생성했습니다.
페이지를 열면 로그인 페이지로 리디렉션되는데 이것이 문제입니다.
자동으로 로그인하고 이메일을 받으려면 이 정보가 필요합니다.
이는 cron 프로세스이므로 로그인을 입력해야 할 때마다 이메일을 가져오는 것은 해결책이 아닙니다. </p>
<p>https://xxxx.co/projects/test.php?action=login
이 링크를 열면 로그인을 요청합니다. 애플리케이션 ID, 비밀 ID, 테넌트 ID와 같은 모든 데이터를 이미 배치했기 때문에 이를 원하지 않습니다. </p>
<p>이미 Microsoft에 로그인되어 있는 경우 로그인을 요청하지 않고 이메일을 통해 페이지를 가져옵니다. 하지만 시크릿 모드로 열면 로그인을 요청합니다.我们如何删除它并直接获取电子邮件</p>
<pre class="brush:php;toolbar:false;"><?php
$appid = "xxxxx";;
$tennantid = "xxxxx";;
$secret = "xxxxxx";;
$login_url ="https://login.microsoftonline.com/".$tennantid."/oauth2/v2.0/authorize"
세션_시작();
$_SESSION['state']=session_id();
echo "<h1>MS OAuth2.0 데모</h1><br>"
if (isset ($_SESSION['msatg'])){
echo "
인증됨 ".$_SESSION["uname"]." </h2><br> ";
echo '<p><a href="?action=logout">로그아웃</a></p>';
} //세션이면 종료
else echo '<h2><p><a href="?action=login">로그인</a>할 수 있습니다. Microsoft</p></h2>';
if ($_GET['action'] == '로그인'){
$params = 배열('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("#");
if(i>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_setopt($ch, CURLOPT_HTTPHEADER, array('권한 부여: Bearer'.$t,
'콘텐츠 유형: 애플리케이션/json'));
cur_setopt($ch, CURLOPT_URL, "https://graph.microsoft.com/v1.0/me/");
컬_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$rez = json_decode(curl_exec($ch), 1);
if (array_key_exists ('error', $rez)){
var_dump($rez['error']);
주사위();
}
또 다른 {
$_SESSION['msatg'] = 1; //인증 및 확인
$_SESSION['uname'] = $rez["displayName"];
$_SESSION['id'] = $rez["id"];
}
컬_닫기($ch);
헤더('위치: https://xxxx.co/projects/test.php');
}
if ($_GET['action'] == '로그아웃'){
설정 해제($_SESSION['msatg']);
헤더('위치: https://xxxx.co/projects/test.php');
}</pre>
<p>저희는 php 直接抓取电子邮件</p>
사용자의 이메일을 검색하려면
OAuth 2.0授权
对用户进行身份验证并获取访问令牌。并使用它调用Microsoft Graph API
를 사용하세요.문의하신 내용은 로그인하지 않은 상태에서도 로그인 페이지가 나타날 수 있습니다. 이 문제를 해결하려면 인증 코드 대신
OAuth 2.0 客户端凭据
를 사용해야 합니다. p>클라이언트 자격 증명을 사용하여 액세스 토큰을 얻는 샘플 코드입니다.
으아악액세스 토큰을 받은 후 이를 사용하여
Microsoft Graph API
전화를 걸고 사용자의 이메일을 검색할 수 있습니다.사용자 이메일을 검색하기 위한 샘플 코드.
으아악자세한 내용은 MSDoc1 및 MSDoc2을 참조하세요.