网盘列表程序通过API访问Onedrive,需要在Azure AD管理中完成注册应用程序、设置Auth重定向、创建API访问密钥、授权等几个步骤的工作。以下按步骤详细列出。
登录Azure Portal,点击“管理Azure Active Directory”打开AD管理页面(或者搜索栏搜索Acative Directory后打开)。
在Azure活动目录管理概述页,选择“应用注册”,打开应用注册页。
应用注册页面,点击“新注册”以开始注册新应用程序。
分别输入应用程序名称,在“重定向URI(可选)”选择重定向URI类型为web,URI可设为onedrive列表程序(网盘程序)指定的内容或者简易设为"http://localhost"即可。
完成注册后,在概述页面选择“证书与密钥”。
选择"+新客户端密码",开始创建密钥。
右侧会弹出添加客户端密码选项卡,输入密码说明,选择密码有效期后,在左下角点击创建。
创建完成后,复制新创建的密码(表格中“值”列),该密码(secret)仅在创建完成时完整显示一次。
回到应用程序概述页面,选择“API权限”对应用程序授权,之后选择“添加权限”。
在弹出的请求获取API权限选项卡,点选“Microsoft Grapg”面板。
之后,选择“委托的权限”,搜索“Files”(区分大小写),将所列3项勾选后,单击“添加权限”按钮。这里仅为Read权限,可结合实际需要选择,个人网盘进列表、直链下载无需Write,可于官方onedrive或sharepoint管理页面对网盘文件进行上传、管理。
系统部署后,回到权限概述页面,会列出刚添加的三项API权限(User read为应用程序创建时AD默认添加)。
回到应用程序概述页,可以将应用程序ID(Client ID)拷贝备用。
同时,URI重定向可在身份验证页面进行添加、修改,或者结合列表程序的安装部署、使用情况进行调整。
至此,应用程序、密码、授权均已配置完成,可按照列表程序部署要求(如alist获取刷新令牌)进行下一步,或者参考如下PHP代码自行获取并保管好自己的访问令牌(Access Token)。
<?php $clientID = 'CLIENT_ID'; $clientSecret = 'SECRET'; $tokenURL = 'https://login.microsoftonline.com/TENANT_ID/oauth2/token'; $data = array( 'grant_type' => 'client_credentials', 'client_id' => $clientID, 'client_secret' => $clientSecret, 'resource' => 'https://graph.microsoft.com' ); $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($tokenURL, false, $context); $tokenData = json_decode($result, true); if (isset($tokenData['access_token'])) { $accessToken = $tokenData['access_token']; $expiresIn = $tokenData['expires_in']; $expirationDateTime = new DateTime(); $expirationDateTime->add(new DateInterval('PT' . $expiresIn . 'S')); $expirationDate = $expirationDateTime->format('Y-m-d H:i:s'); echo "获取到的AccessToken: " . $accessToken . "<br>"; echo "AccessToken的过期时间: " . $expirationDate . "<br>"; } else { echo "无法获取AccessToken"; } ?>
文章评论