如何通过REST API正确连接Project Online并解决授权问题
解决Project Online REST API 未授权问题的步骤
你的PWA站点API URL是正确的:https://2023.sharepoint.com/sites/pwa/_api/ProjectData/Projects,问题出在授权方式——Project Online属于Microsoft 365生态,早已禁用Basic Auth,必须使用Azure AD颁发的Bearer令牌进行身份验证。以下是具体操作流程:
1. 在Azure AD注册应用程序
- 登录Azure门户,进入「Azure Active Directory」→「应用注册」→「新注册」。
- 填写应用名称,选择「账户类型」(根据需求选,比如「仅此组织目录中的账户」),注册后记录客户端ID和租户ID。
- 进入应用的「证书和密码」→「客户端密码」,新建一个密码并保存(这个是客户端密钥,仅显示一次,务必记录)。
- 进入「API权限」→「添加权限」→ 搜索「Project Online」,选择对应权限(比如
Project.Read.All,需修改项目则选Project.ReadWrite.All),然后点击「授予管理员同意」(必须租户管理员操作,否则权限不生效)。
2. 获取Azure AD访问令牌
使用客户端凭据流程请求令牌,示例curl请求:
curl --location 'https://login.microsoftonline.com/你的租户ID/oauth2/v2.0/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'client_id=你的客户端ID' \ --data-urlencode 'client_secret=你的客户端密钥' \ --data-urlencode 'scope=https://2023.sharepoint.com/.default'
返回的JSON中,access_token就是所需的Bearer令牌。
3. 调用Project Online API
在GET请求中添加Authorization头,示例curl命令:
curl --location 'https://2023.sharepoint.com/sites/pwa/_api/ProjectData/Projects' \ --header 'Authorization: Bearer 你的access_token' \ --header 'Accept: application/json;odata=verbose'
执行后即可正常获取项目列表。
常见排查点
- 确认权限已被管理员同意,否则会返回权限不足错误。
- 检查scope是否正确:必须匹配你的SharePoint域名(此处为
https://2023.sharepoint.com/.default)。 - 确保客户端ID、租户ID、客户端密钥无输入错误。
内容的提问来源于stack exchange,提问作者DreamMaster
相关产品推荐
相关产品推荐

