Microsoft Graph API-发送电子邮件-NoPermissionsInAccessToken

时间:2019-09-10 10:38:33

标签: ruby microsoft-graph

我创建了一个Ruby应用程序来使用Microsoft Graph API发送电子邮件。 我在没有用户的情况下获得访问令牌: https://docs.microsoft.com/en-us/graph/auth-v2-service#5-use-the-access-token-to-call-microsoft-graph

url = URI.parse("https://login.microsoftonline.com/common/oauth2/v2.0/token")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = (url.scheme == "https")

req = Net::HTTP::Post.new(url.request_uri)
req.set_form_data({
    'client_id' => CLIENT_ID, 
    'client_secret' => CLIENT_SCERET,
    'grant_type' => 'client_credentials',
    'scope' => 'https://graph.microsoft.com/.default'
})
response = http.request(req)

我得到了令牌。

接下来,我要使用门户网站azure上具有我的应用程序的应用程序向具有用户权限的任何用户发送邮件。

enter image description here

然后,我调用send_mail函数。

url = URI.parse("https://graph.microsoft.com/v1.0/users/{MYID}/sendMail")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = (url.scheme == "https")
req = Net::HTTP::Post.new(url.request_uri)
req["Authorization"] = "Bearer #{get_token_without_user}"
req["Content-type"] = "application/json"

req.set_form_data({
    "message": {
       "subject": "Meet for lunch?",
       "body": {
          "contentType": "Text",
          "content": "The new cafeteria is open."
        }
     },
     "toRecipients": [
        {
          "emailAddress": {
             "address": "to_email@gmail.com"
          }
     }],
     "saveToSentItems": "false"
})
response = http.request(req)

我收到此错误:

enter image description here

那么,有人可以指导我我的错误在哪里吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

我不了解Ruby-通过有线发送时,范围参数URLEncoded是吗?

抓住响应,看看。它具有access_token属性吗?如果是这样,请复制该属性的值并将其粘贴到https://jwt.ms中。在已解码令牌中查找作用域或角色-它应与AAD门户中已设置的范围或角色匹配。