找不到资源从MS Graph API获取联系人时

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

我尝试使用github示例进行Azure AD身份验证,并使用正确的回调URL成功获取访问令牌。

https://github.com/Microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/18.bot-authentication

根据我在https://apps.dev.microsoft.com中创建的应用程序修改和配置的Web.config密钥

  <add key="ActiveDirectory.Mode" value="v1" />
<add key="ActiveDirectory.ResourceId" value="https://graph.microsoft.com" />
<add key="ActiveDirectory.EndpointUrl" value="https://login.microsoftonline.com" />
<add key="ActiveDirectory.Tenant" value="xyz-xyz" />
<add key="ActiveDirectory.ClientId" value="xyz-xyz" />
<add key="ActiveDirectory.ClientSecret" value="xyz-xyz" />
 <add key="ActiveDirectory.RedirectUrl" value="http://localhost:3979/api/Callback" />
<add key="ActiveDirectory.Scopes" value="Calendars.Read,Calendars.ReadWrite,Contacts.Read,Contacts.ReadWrite,Mail.Read,Mail.ReadWrite,User.Read" />

我已经越过了检查访问令牌,我收到了jwt.ms。它是一个有效的标记,其范围与我在web.config中定义的完全相同。

我可以通过传递令牌从API获取用户配置文件数据,但在尝试呼叫用户的“联系人”时,我收到以下错误。

{
"error": {
    "code": "ResourceNotFound",
    "message": "Resource could not be discovered.",
    "innerError": {
        "request-id": "6f0f3ec9-76c9-4662-ac25-0bc73f887268",
        "date": "2019-03-02T17:23:35"
    }
}

}

代码调用Contact API调用。

   //Get Logged in user contacts
    public async Task<IUserContactsCollectionPage> GetMyContactsAsync()
    {
        var graphClient = GetAuthenticatedClient();
        IUserContactsCollectionPage contacts = await graphClient.Me.Contacts.Request().GetAsync();
        return contacts;
    }

仅供参考:模拟器中显示的登录卡授权示例URL如下所示

https://login.microsoftonline.com/a76b43b0-3088-4c56-ba0d-01f317b1f18c/oauth2/authorize?resource=https:%2F%2Fgraph.microsoft.com&client_id=XYZ&response_type=code&haschrome=1&redirect_uri=http:%2F%2Flocalhost:3979%2Fapi%2FCallback&x-client-SKU=PCL.Desktop&x-client-Ver=3.13.9.1126&x-client-CPU=x64&x-client-OS=Microsoft+Windows+NT+10.0.16299.0&state=<stateID>
outlook azure-active-directory botframework microsoft-graph microsoft-graph-sdks
1个回答
2
投票

可能出于多种原因,其中一个非常常见的问题是需要授予您注册的应用程序的授予权限。确保您已完成相应的以下步骤。

Step 1:

登录您的门户网站,在应用注册下选择您的应用程序。然后单击设置,请参见下面的屏幕截图:

enter image description here

Step 2:

单击“设置”后,新窗口将出现在右侧,单击“所需权限”菜单:请参见下面的屏幕截图:

enter image description here

Step 3:

选择必需的权限菜单并通过单击添加按钮分配您的权限,请参阅下面的快照:

enter image description here

Step 4:

单击选择API选项,请参阅以下内容:

enter image description here

Final Step:

选择所需的API并检查您要访问的API。完成许可后,单击“完成”。完成此步骤后,您可以从应用程序访问所需的资源/范围。希望它对你有所帮助。谢谢你。看下面的屏幕截图:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.