小编Nic*_*her的帖子

Office 365 Rest API - 守护程序周身份验证

我正在尝试构建一个Ruby Daemon服务来访问Office 365 rest API.最近通过OAuth'client_credentials'流程实现了这一点,详见本博客文章:http://blogs.msdn.com/b/exchangedev/archive/2015/01/22/building-demon-or -服务-应用程序-与办公-365-邮件日历和联系人的API-的oauth2客户端-凭据flow.aspx

我正在努力生成有效的访问令牌.令牌端点返回给我一个JWT但是当使用这个令牌时,我收到了一条带有此消息的401:

使用身份验证方法获取访问令牌,该身份验证方法太弱而无法访问此应用程序.提出的auth强度为1,要求为2

我知道client_credentials流程要求您提供X.509证书,不幸的是,博客文章中的所有示例都是针对C#的.

我在请求令牌时使用生成的自签名证书和私钥来执行客户端断言.我按照博客文章中的步骤生成证书并更新清单以使用此证书.

这是红宝石代码供参考:

def request_token
  uri = URI.parse("https://login.windows.net/== TENANT-ID ==/oauth2/token?api-version=1.0")
  https = Net::HTTP.new(uri.host, uri.port)

  req = Net::HTTP::Post.new(uri.request_uri)
  req.set_form_data(
    :grant_type    => 'client_credentials',
    :redirect_uri  => 'http://spready.dev',
    :resource      => 'https://outlook.office365.com/',
    :client_id     => '== Client ID ==',
    :client_secret => '== Client secret =='
  )

  https.use_ssl = true
  https.cert = client_cert
  https.key = client_key
  https.verify_mode = OpenSSL::SSL::VERIFY_PEER

  resp = https.start { |cx| cx.request(req) }

  @access_token = JSON.parse(resp.body)
end
Run Code Online (Sandbox Code Playgroud)

显然,为了安全起见,我删除了一些信息.即使它是ruby,您也可以看到我正在使用我的证书来验证使用SSL连接的客户端.

以下是有关错误的更多信息:

"x-ms-diagnostics" => "2000010; …
Run Code Online (Sandbox Code Playgroud)

ruby rest ssl exchangewebservices office365

9
推荐指数
2
解决办法
3484
查看次数

Office 365 Rest API - 检索纯文本电子邮件

目前是否可以使用 Office 365 Rest API 来检索电子邮件的纯文本部分?

从 API 文档中可以看出,'Body' 对象包含可以是TextHTML的 'ContentType' 字段。https://msdn.microsoft.com/office/office365/APi/complex-types-for-mail-contacts-calendar#ItemBody

然而,每当检索到多部分(HTML + 纯文本)消息时,API 只会返回 HTML 部分,如下所示:

{
  "@odata.context": "",
  "@odata.id": "",
  "Id": "",
  "Subject": "Test message",
  "BodyPreview": "This is the body",
  "Body": {
    "ContentType": "HTML",
    "Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body style=\"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif;\">\r\n<div>This is the body</div>\r\n</body>\r\n</html>\r\n"
  },
  "UniqueBody": {
    "ContentType": "HTML",
    "Content": "<html><body><div>\r\n<div><font face=\"Calibri,sans-serif\" size=\"2\" color=\"black\"><span style=\"font-size:14px;\">\r\n<div>This is the body</div>\r\n</span></font></div>\r\n</div>\r\n</body></html>"
  }, …
Run Code Online (Sandbox Code Playgroud)

email plaintext exchangewebservices office365

2
推荐指数
1
解决办法
3674
查看次数

标签 统计

exchangewebservices ×2

office365 ×2

email ×1

plaintext ×1

rest ×1

ruby ×1

ssl ×1