我正在构建一个SaaS应用程序,该应用程序将使用Azure AD对用户进行身份验证.假设我在同意提示期间要求用户获得1个授权许可,并且用户接受它.
稍后我的应用程序发展并需要获得更多委派权限.在这种情况下,如何使用同意页面重新提示用户?我只想在权限发生变化时才这样做一次.
我是否需要在我的应用中跟踪每个用户同意的权限,然后确定prompt=admin_consent
在重定向到auth页面时添加查询参数?
如文档所述,使用Microsoft Graph REST API,您可以(除其他选项外)通过Id或Path获取项目。可以正常工作,如预期的那样:
GET /me/drive/items/{item-id}/children
GET /me/drive/root:/{item-path}:/children
Run Code Online (Sandbox Code Playgroud)
使用.NET SDK,我可以按ID(即第一种情况)获取文件夹:
var items = await graphClient.Me.Drive.Items[myFolderId].Children.Request().GetAsync();
Run Code Online (Sandbox Code Playgroud)
但是,我找不到方法(使用.NET SDK)执行相同操作,而是指定了路径而不是ID(即第二种情况)。
我不想找到我已经知道的路径的ID,以为其创建请求。对?
恐怕无法使用当前的SDK(Microsoft Graph Client Library 1.1.1)来做到这一点?
我正在尝试通过displayName查询用户,但是在通过C#SDK和Graph Explorer发送请求时,我无法转义单引号.
更新:在示例中不清楚,我遇到问题的搜索词是 I'
示例查询:https://graph.microsoft.com/v1.0/users?$ filter [ startsWith( display_name,'I%27')导致
Status Code: 400
{
"error": {
"code": "BadRequest",
"message": "There is an unterminated string literal at position 28 in 'startsWith(displayName,'I'')'.",
// snip
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了各种各样的转义,反斜杠,双引号,%2527
而不是引用,没有任何作用.查询报价的正确方法是什么?
使用Microsoft图形API,特别是sharepoint beta api,我经常遇到问题.我知道它的测试版,但仍然;)
所以问题是当我尝试使用图形浏览器URL中的图谱API访问共享点列表时:GET https://graph.microsoft.com/beta/sites/ {site-id}/lists/{list-id}
所以SiteID我将我的网站租户GUID和列表ID作为Sharepoint List GUID传递,我在Response中不断遇到错误
{"error":{"code":"invalidRequest","message":"提供的id不适合当前主机","innerError":{"request-id":"61efc5b1-88f8-442c-a41d- 7213b587318e","date":"2017-05-10T07:38:04"}}}
如果任何人也遇到过这个问题,请告诉我您已解决的解决方案
我正在使用Azure Logic应用程序通过操作调出Microsoft Graph API HTTP - HTTP
。对于此API,我需要使用以下主体执行POST请求:
{
"@odata.id": "<guid>"
}
Run Code Online (Sandbox Code Playgroud)
当我尝试保存逻辑应用程序时,此错误显示:
Failed to save logic app <redacted>. The template validation failed: 'The template action '<redacted>' at line '1' and column '144589' is not valid: "Unable to parse template language expression 'odata.id': expected token 'LeftParenthesis' and actual 'Dot'.".'.
Run Code Online (Sandbox Code Playgroud)
如何在JSON有效负载中使用此属性?
我从Microsoft Graph API收到的错误是
error = {
"code": "BadRequest",
"innerError": {
"date": "2017-04-10T19:37:08",
"request-id": "973641dd-b150-4406-9f3b-fbcf6f7e5aa1"
},
"message": "The MIME type 'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2' requires a '/' character between type and subtype, such as 'text/plain'."
}
Run Code Online (Sandbox Code Playgroud)
使用POSTman时,我可以从端点https://graph.microsoft.com/v1.0/me/contacts成功获取信息,但是转到scribe-java库OAuthRequest时,我收到此错误。
我的请求将转到带有2个标题的URL https://graph.microsoft.com/v1.0/me/contacts。授权->承载[令牌]
内容类型-> application / json
我正在尝试使用REST API调用Microsoft Graph,但遇到了一些问题。我的应用程序最终将是部署到Azure的Web应用程序,我需要在没有登录用户的情况下通过REST调用Graph。
在尝试调试时,我尝试制作了最简单的应用程序。该应用程序正试图使用Graph从Azure Active Directory中读取用户的配置文件。
我在AAD中注册了我的应用,因此我有一个租户,客户ID和客户密码。至此,我已经在AAD和Graph API下授予了所有许可(出于测试目的)。我可以从AAD获得令牌,但是当我使用该令牌调用Graph API时,我会获得401 - Unauthorized
with Access Token Validation Error
。
我已经搜索了此错误,却没有发现任何适用的方法。
编辑:添加权限后,我还向我的应用程序授予了权限。
我已经从各种样本中抓取了一些片段,以尝试使其正常工作。这是代码:
var tenant = "tenant ID";
var clientID = "app ID";
// I've tried graph.microsoft.com and graph.microsoft.com/.default
var resource = "https://graph.microsoft.com/user.read.all";
var secret = "client secret";
string token;
using(var webClient = new WebClient())
{
var requestParameters = new NameValueCollection();
requestParameters.Add("scope", resource);
requestParameters.Add("client_id", clientID);
requestParameters.Add("grant_type", "client_credentials");
requestParameters.Add("client_secret", secret);
var url = $"https://login.microsoftonline.com/{tenant}/oauth2/token";
var responseBytes = await webClient.UploadValuesTaskAsync(url, "POST", requestParameters);
var responseBody …
Run Code Online (Sandbox Code Playgroud) 我遇到了使用v1.0 Microsoft Graph API将文件上传到上传会话的问题.我的步骤:
这是我收到的错误:
{
"error":
{
"code":"invalidRequest",
"message":"The Content-Range header is missing or malformed."
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下格式,但仍然收到相同的错误.
"bytes 0-100/100"
"0-100/100"
"0-100"
Run Code Online (Sandbox Code Playgroud)
我正在关注Mircosoft的这篇文章https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/item_createuploadsession
这是我的函数,上传到uploadUrl从创建上传会话中检索
public uploadToSession(file: HTMLInputElement, session: any, fileData: any) {
var headers = new Headers();
headers.append('Content-Length', fileData.length); //(ie: "100")
headers.append('Content-Range', fileData.range); //(ie: "bytes 0-100/100")
this.http.put(session.uploadUrl, { headers })
.subscribe(
(res: Response) => console.log(res),
error => console.log(error)
);
}
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢!提前致谢.
我想拒绝一次例行会议。我只有masterSerieId,iCalId,该实例的时间。
您知道如何取消该实例吗?
我是否必须使用masterId和实例的时间进行查询才能找到事件ID,或者有一种方法可以使用iCalId查找eventId?
我正在将v1 Azure AD身份验证URL(/common/oauth2/authorize
)用于需要的多租户应用程序admin_consent
.
我试图添加一个新范围Directory.AccessAsUser.All
.当我的所有其他作用域都是"应用程序"级别权限时,这是我要求的第一个"委托"权限.
当我添加新的委派范围并提示管理员重新同意时,其他范围从返回的AccessToken
和响应scope
参数中消失.只Directory.AccessAsUser.All
存在于该access_token
scp
领域.
这种行为会发生什么原因吗?我很肯定我们正在推广admin_consent
并且管理员是同意的.