我如何使用Microsoft Graph OAuth代码流生成可以读取邮件的令牌?

问题描述 投票:0回答:1

重新创建步骤需要:

步骤1:使用授权应用程序的Azure客户端ID替换“ MY_CLIENT_ID”。

https://login.microsoftonline.com/common/oauth2/authorize?client_id=MY_CLIENT_ID&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A12345&response_mode=query&resource=https%3A%2F%2Fgraph.microsoft.com%2F&state=12345&prompt=admin_consent&scope=https%3A%2F%2Fgraph.microsoft.com%2Fmail.read

步骤2:在网络浏览器地址栏中输入URL。

[步骤3:继续授权应用程序使用现有的Azure帐户阅读电子邮件。 (浏览器网址将更改为带有OAuth代码的网址。)

步骤4:复制OAuth代码。

步骤5:在下面的CURL命令中:

  • 用授权应用程序的Azure客户端ID替换“ MY_CLIENT_ID”。
  • 将“ MY_CLIENT_SECRET”替换为授权应用程序的客户密码。
  • 用OAuth代码替换“ MY_OAUTH_CODE”。

curl -X POST -H "content-type: application/x-www-form-urlencoded" -d "grant_type=authorization_code&code=MY_OAUTH_CODE&redirect_uri=http%3A%2F%2Flocalhost%3A12345&client_id=MY_CLIENT_ID&scope=https%3A%2F%2Fgraph.microsoft.com%2Fmail.read&client_secret=MY_CLIENT_SECRET" "https://login.microsoftonline.com/common/oauth2/token"

[步骤6:在命令控制台中输入CURL命令。 (将返回有效的请求令牌。)

步骤7:将下面CURL命令中的“ MY_REQUEST_TOKEN”替换为请求令牌,然后在命令控制台中执行该命令。

curl -H "Authorization: Bearer MY_REQUEST_TOKEN" "https://graph.microsoft.com/v1.0/me/"

注意,已返回基本帐户信息-表示令牌有效。

步骤8:将下面CURL命令中的“ MY_REQUEST_TOKEN”替换为请求令牌,然后在命令控制台中执行该命令。

curl -H "Authorization: Bearer MY_REQUEST_TOKEN" "https://graph.microsoft.com/v1.0/me/messages"

返回此错误:

{
  "error": {
    "code": "ResourceNotFound",
    "message": "Resource could not be discovered.",
  }
} 
microsoft-graph
1个回答
0
投票

由于您正在尝试阅读邮件,请使用必需的权限(即Mail.ReadBasic,Mail.Read。)设置对已注册应用的权限。>

请仔细阅读文档https://docs.microsoft.com/en-us/previous-versions/office/office-365-api/api/version-2.0/mail-rest-operations

查看文档,这是客户端类代码:https://github.com/microsoftgraph/msgraph-sdk-dotnet/blob/dev/src/Microsoft.Graph/Requests/Generated/GraphServiceClient.cs

这里是一个例子:

private static GraphServiceClient GetClient(string accessToken, IHttpProvider provider = null)
{
        var delegateAuthProvider = new DelegateAuthenticationProvider((requestMessage) =>
        {
            requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken);

            return Task.FromResult(0);
        });

        var graphClient = new GraphServiceClient(delegateAuthProvider, provider ?? HttpProvider);

        return graphClient;
 }
© www.soinside.com 2019 - 2024. All rights reserved.