我使用V1以获得来自Microsoft REST API的令牌.(我们有Office 365租户,我曾经成功获得所有资源,但没有任何问题.
clientId =8a67......de4b6
clientSecret =J58k8....5EU=
redirectUri =http://example.com...
resourceUrl =https://graph.microsoft.com
authority = https://login.microsoftonline.com/f02633....a603/oauth2/token
Run Code Online (Sandbox Code Playgroud)
https://login.microsoftonline.com/f0263...0be3/oauth2/authorize?client_id=8a6..b6&redirect_uri=http://example.com&response_type=code&scope=mail.read
它给了我一个在JWT上结构如下的令牌.它表示无效签名但不确定是什么问题.
一旦我有了令牌,我就尝试了下面的卷曲调用
curl -i https://graph.microsoft.com/v1.0/me/messages -H 'Content-Type: application/x-www-form-urlencoded' -H 'Authorization: Barer eyJ.[TOKEN]...UNa6nfw'
Run Code Online (Sandbox Code Playgroud)
而不是消息,我收到以下错误:
HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=utf-8Cl23
Server: Microsoft-IIS/8.5
request-id: af2390b1-a9b...5ab9
client-request-id: af2390,....a615ab9
x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"West US","Slice":"SliceA","ScaleUnit":"000","Host":"AGSFE_IN_4","ADSiteName":"WST"}}
X-Powered-By: ASP.NET
Date: Thu, 19 Jan 2017 23:55:43 GMT
Content-Length: 268
{
"error": {
"code": "InvalidAuthenticationToken",
"message": "CompactToken parsing failed with error code: -2147184105",
"innerError": {
"request-id": "af2390b1-...5ab9",
"date": "2017-01-19T23:55:44"
}
} …Run Code Online (Sandbox Code Playgroud) 重现步骤:
我能够使用Visual Studio中的基本Excel加载项项目模板重现这一点.
我目前正在使用最新版本的Excel(16.0.7726.1030).
任何解决方法?
谢谢!
我正在尝试通过非交互式登录在 Azure Active Directory 中找到重置用户密码(所有用户,而不仅仅是经过身份验证的用户)的解决方案。
现在看来,这只能通过使用服务主体登录的powershell 的 MSOnline Set-AzureADUserPasswordcmdlet获得。
我想找到一个使用 API 端点的解决方案,以便我可以使用 C#。我找到的最接近的解决方案是Microsoft Graph API,但在设置之后,我意识到我只能通过交互式登录和同意流程重置密码。不允许通过非交互式。
我的下一次尝试是使用Azure AD 端点,但我担心的是我看到了建议我们使用 Microsoft 图形 API 的相同消息。这是否意味着 Azure 广告端点将消失?
是否有不使用 PowerShell 的推荐方法?
我正在尝试使用 Microsoft Graph 将文件上传到我的组织的 SharePoint,但找不到{parent-id}以下终结点:
PUT /users/{user-id}/drive/items/{parent-id}:/{filename}:/content
Run Code Online (Sandbox Code Playgroud)
应该{parent-id}是id文件将插入到的父目录吗?
我正在使用以下方法连接到Microsoft Graph:
public GraphServiceClient GetAuthenticatedClient(string token)
{
GraphServiceClient graphClient = new GraphServiceClient(
new DelegateAuthenticationProvider(
async (requestMessage) =>
{
// Append the access token to the request.
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", token);
}));
return graphClient;
}
Run Code Online (Sandbox Code Playgroud)
我正在服务器上运行此代码。我正在使用的令牌是由外部应用发送给我的。
在最初的一个小时内一切正常,然后令牌过期。
我的问题是:由于我也可以访问刷新令牌,因此如何获得新令牌?
我正在使用 Microsoft Graph,需要设置一个 Webhook 来接收电子邮件和日历事件的更改。我能够让它与我的 PHP Laravel 应用程序一起工作,但现在我正在尝试订阅通知,我在验证notificationUrl指向我的公共服务器的 时遇到了问题。
用于创建 Webhook 的脚本返回以下错误:
Client error: POST https://graph.microsoft.com/v1.0/subscriptions resulted in a 400 Bad Request response:
{
"error": {
"code": "InvalidRequest",
"message": "Subscription validation request failed. Response must ex (truncated...)
Run Code Online (Sandbox Code Playgroud)
我相信被截断的部分是
订阅验证请求失败。必须对此请求响应 200 OK。
这是我创建订阅的代码:
$data = [
"changeType" => "created",
"notificationUrl" => "https://anatbanielmethod.successengine.net/office365/webhooks/events",
"resource" => "me/events",
"expirationDateTime" => "2018-12-20T18:23:45.9356913Z",
"clientState" => "secret",
];
$result = $graph->createRequest('POST', '/subscriptions')
->attachBody($data)
->execute();
Run Code Online (Sandbox Code Playgroud)
这是我的方法notificationUrl:
public function events()
{
//if validationToken exists return …Run Code Online (Sandbox Code Playgroud) 我正在使用 Microsoft Graph 从邮箱中提取电子邮件数据。当我获取内容时,我发现嵌入的图像内容如下:
<img id="_x0000_i1029"
width="1366"
height="672"
data-outlook-trace="F:1|T:1"
src="cid:image005.png@01D4DE3D.90A3C410"
style="width:14.2291in; height:7.0in">
Run Code Online (Sandbox Code Playgroud)
当该属性hasAttachments为 true 时,我会查找匹配并替换内容的图像,效果很好。问题是我在消息上看到这样的嵌入图像标签,其中hasAttachments是错误的。
我在哪里可以获得图像数据 图表显示消息没有附件,但显然有嵌入图像?
请注意,图像在 Outlook 网页版 中呈现,带有如下标记:
<img data-imagetype="AttachmentByCid"
originalsrc="cid:image005.png@01D4DE3D.90A3C410"
data-custom="AAMkADY1YjgxM2Y4LTE5NTUtNDBjMy1iZDY0LWIzN..."
naturalheight="672"
naturalwidth="1366"
src="https://attachments.office.net/owa/mailboc@mydomain.onmicrosoft.com/service.svc/s/GetAttachmentThumbnail?id=AAMkADY1YjgxM2Y4LTE5NTUtNDBjMy1iZDY0LWIzN...&thumbnailType=2&owa=outlook.office365.com&scriptVer=2019031102.10&X-OWA-CANARY=kKWSUkiFW0WjlPXXXXXXXXX.&token=eyJhbGciOiJSU...&animation=true"
id="_x0000_i1029"
data-outlook-trace="F:1|T:1"
style="width: 1024.49pt; height: 504pt; cursor: pointer;"
crossorigin="use-credentials" >
Run Code Online (Sandbox Code Playgroud) 我正在尝试以我注册的应用程序登录,并授予以下权限:Azure 门户 > 应用程序注册 > 应用程序注册(预览)> 我的应用程序名称 - API 权限
根据此文档,APP ID URI在请求令牌时,我必须在范围参数中传递我的资源标识符 ( )。我确信这个范围参数是导致我出现问题的参数。
我尝试了范围的不同参数。
https://graph.microsoft.com/.default:这适用于基本功能,例如阅读日历,但我认为默认权限很少满足我的需求。既然这样有效,我相信我的其他参数是正确的,范围就是问题所在。
[APP-ID]/.default:这给了我一个成功的响应,但是,每当我尝试提出任何请求时,包括基本的读取日历请求,我都会收到InvalidAuthenticationToken. 我可以向您保证,我正在传递从令牌请求中检索到的正确令牌。
基于在线建议的多种不同 URL 组合。他们都回来了
“在租户 {id} 中找不到资源主体 {resource-url}。
我坚信问题在于我没有通过APP ID URI我的应用程序的正确性。谁能告诉我在哪里可以找到这个资源?我在网上搜索的所有内容都已使用 2 年以上,对于新的 Azure 门户似乎并不相同。
我们得到一个的权限driveItem使用Microsoft图形作为记录在这里。
每个返回的权限对象通常包含一个grantedTo以为IdentitySet其值的字段。但问题在于,每个Identity始终都是user:
"grantedTo": {
"user": {
"displayName": "data Owners",
"email": "data@example.onmicrosoft.com",
"id": "94c3e81b-f6fb-43c6-8df5-b98462ccf191"
}
}
Run Code Online (Sandbox Code Playgroud)
"grantedTo": {
"user": {
"displayName": "Data Members"
}
}
Run Code Online (Sandbox Code Playgroud)
即使这些是组,也会发生这种情况。因此,无法使用这些数据来确定什么是组,什么是用户。
我们希望避免执行任何其他操作,因为这可能会导致效率低下。
因此,我们问是否有一种无需任何其他API请求即可识别它是组还是用户的方法?例如一些未记录的查询参数或关系?
我们配置了一个天蓝色的活动目录应用程序,以便我们网站的用户可以通过他们的Microsoft 帐户登录。问题是,如果我们不授予管理员访问权限,则登录应用程序将失败并显示错误代码AADSTS650056:
应用程序配置错误。这可能是由于以下原因之一造成的: 客户端未在客户端应用程序注册中请求的权限中列出“AAD Graph”的任何权限。
我们对点击“授予管理员同意”持怀疑态度,担心这可能会暴露任何漏洞。这是正确的方法吗?如果不是,有哪些替代方案可以绕过这种同意?