当前位置: 首页 > 知识库问答 >
问题:

另一个用户使用访问令牌onedrive文件

林博厚
2023-03-14
I'm userX. I need to access userY onedrive files from api and upload files.

When I send request for user token to https://login.microsoftonline.com/tenant/oauth2/token I got it.
POST token Request:
   url: https://login.microsoftonline.com/tenant/oauth2/token
   grant_type: password
   username: userY
   password: ***(my password)***
   resource: ***(my resource)***
   client_id: ***(my client id)***
   client_secret: ***(my client secret)***
Response:
   "token_type": "Bearer",
   "scope": "AllSites.FullControl AllSites.Manage AllSites.Read AllSites.Write Calendars.Read Calendars.Read.Shared Calendars.ReadWrite Calendars.ReadWrite.Shared Contacts.Read Contacts.Read.Shared Contacts.ReadWrite Contacts.ReadWrite.Shared Directory.AccessAsUser.All Directory.Read.All Directory.ReadWrite.All email Files.Read Files.Read.All Files.Read.Selected Files.ReadWrite Files.ReadWrite.All Files.ReadWrite.AppFolder Files.ReadWrite.Selected Group.Read.All Group.ReadWrite.All IdentityRiskEvent.Read.All Mail.Read Mail.Read.Shared Mail.ReadWrite Mail.ReadWrite.Shared Mail.Send Mail.Send.Shared MailboxSettings.ReadWrite Member.Read.Hidden MyFiles.Read MyFiles.Write Notes.Create Notes.Read Notes.Read.All Notes.ReadWrite Notes.ReadWrite.All Notes.ReadWrite.CreatedByApp offline_access openid People.Read profile Reports.Read.All Sites.Read.All Sites.ReadWrite.All Sites.Search.All Tasks.Read Tasks.Read.Shared Tasks.ReadWrite Tasks.ReadWrite.Shared TermStore.Read.All TermStore.ReadWrite.All User.Read User.Read.All User.ReadBasic.All User.ReadWrite User.ReadWrite.All",
  "expires_in": "3599",
  "ext_expires_in": "0",
  "expires_on": "1485157695",
  "not_before": "1485153795",
  "resource": ***(my resource)***
  "access_token": "***here is my access token***"
  "refresh_token": "***here is my refresh token***"


I try to use this token:

First example (is not appropriate: Kevin explained below):
    GET Request
    url: https://api.office.com/discovery/v2.0/me/services
    Header Authorization: Bearer  ***here is my access token***
    Response:
    {
    "error": {
    "code": "-2147024891, System.UnauthorizedAccessException",
    "message": "Access denied. You do not have permission to perform this action or access this resource."
    }
    }

Second example:
    GET Request
    url: http://tenant.sharepoint.com/_api/search/query?querytext='*'
    Header Authorization: Bearer  ***here is my access token***
    Response:
    {"error_description":"Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown."}


Third example: 
    POST Request:
    url: https://tenant-my.sharepoint.com/_api/v2.0
    Header Authorization: Bearer  ***here is my access token***
    Response:
    {"error_description":"Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown."}


The question is: why I can't use my access token? What I'm doing wrong?

Thanks

共有1个答案

袁帅
2023-03-14

您的第一个示例是对发现服务的请求,如果您还不知道资源ID,则通常使用该服务来发现资源ID。这个请求将需要一个用resourceId==发现服务URL获取的令牌。一旦从发现服务获得了正确的资源ID,就可以使用新的ResourceID请求新的访问令牌。

“问题是:为什么我不能使用我的刷新令牌?我做错了什么?”:刷新令牌不是进行API调用的有效令牌,您需要access_token。刷新令牌用于在到期时获取新的访问令牌。

 类似资料:
  • 我目前正在尝试使用ADFS 2016认证angular 7应用程序(使用angular-oauth2-oidc)。到目前为止,它工作得很好。当我访问应用程序时,我被重定向到ADFS登录页面,在那里输入我的凭据并获得令牌。 现在,当应用程序调用web API时,它在请求头中发送访问令牌。ADFS返回的访问令牌如下所示: 问题是web API必须知道进行调用的用户的ID(因为在应用程序级别定义了一些权

  • 我需要通过REST API访问域中的所有用户文件。我只能通过通过正常OAUTH流授予的访问令牌访问域用户的文件。 我发现了这篇文章:使用Office 365邮件、日历和联系人API(OAuth2客户端凭据流)构建守护程序或服务应用程序 本文仅提及邮件、日历和联系人API。是否支持文件API?

  • 我正在使用Cognito用户池对系统中的用户进行身份验证。成功的身份验证将提供一个ID令牌(JWT)、一个访问令牌(JWT)和一个刷新令牌。这里的文档清楚地提到了刷新令牌可以用于刷新访问令牌,但没有提到如何使用。我的问题是,一旦我的访问令牌过期,我如何使用存储的刷新令牌再次刷新我的访问令牌? 我搜索了JavaScript SDK,但找不到任何方法来做同样的事情。我肯定错过了什么。 我还想通过Lam

  • 我知道之前有人对此提出过疑问,但在尝试推送存储库时,我仍然会遇到一个恼人的错误: 在我输入我的个人访问令牌后,它会出错: 远程:2021 8月13日取消了对密码验证的支持。请使用个人访问令牌。遥控器:请看https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/了解更多信息。致命:身份验证

  • 我必须将一个遗留的身份验证系统移到Keycloak,并且我不能更改客户端上的实际工作流。因此,我需要用我的api(在node.js中)提供一个用户创建和登录系统,该系统反过来代表用户从Keycloak创建和获取访问令牌。 我能够创建一个用户,但我无法找到为该用户生成访问令牌的方法。我找到的唯一解决办法是创建一个用户并设置一个随机密码,然后要求授予提供用户名和密码的用户,但这意味着我必须在自己的一侧

  • 使用KeyCloak时,访问令牌与用户信息令牌有何不同? 从OAuth2/OpenIDConnect中,我了解到访问令牌提供了用户已经通过身份验证的信息,您需要使用用户信息令牌来获取关于用户及其配置文件/角色等的更多信息。 当我看到访问令牌时https://jwt.io/而不是用户信息令牌。我能够获得与用户配置文件相同的信息 为什么会这样,使用Keycloak时访问令牌与用户信息令牌有何不同?