2017-09-27 11 views
1

私は長い間検索しましたが、関連する解決策が見つかりませんでした。javascript SDKでOutlookメッセージを送信するには?

makeSilentTokenRequest

//The static key authentication request 
function makeSilentTokenRequest(callback) { 

    // Build up a hidden iframe 
    var iframe = $('<iframe/>'); 
    iframe.attr('id', 'auth-iframe'); 
    iframe.attr('name', 'auth-iframe'); 
    iframe.appendTo('body'); 
    iframe.hide(); 

    iframe.load(function() { 
     callback(localStorage.accessToken); 
    }); 

    iframe.attr('src', buildAuthUrl() + '&prompt=none&domain_hint=' + 
     localStorage.userDomainType + '&login_hint=' + 
     localStorage.userSigninName); 

} 

getAccessToken

//Verify refresh token function 
function getAccessToken(callback) { 
    var now = new Date().getTime(); 
    var isExpired = now > parseInt(localStorage.tokenExpires); 

    // Do we have a token already? 
    if (localStorage.accessToken && !isExpired) { 
     // Just return what we have 
     if (callback) { 
      callback(localStorage.accessToken); 
     } 
    } else { 
     // Attempt to do a hidden iframe request 
     makeSilentTokenRequest(callback); 
    } 
} 
:私は 403を取得するために、MicrosoftグラフAPIを経由してメールを送信すると、問題が

{ 
    statusCode: 403, 
    code: "ErrorAccessDenied", 
    message: "Access is denied. Check credentials and try again." 
} 

コードです

は、私は知りません

getUserEmailAddress

function getUserEmailAddress(callback) { 
    //I saved it in localStorage 
    if (localStorage.userEmail) { 
     return localStorage.userEmail; 
    } else { 
     //getAccessToken 
     getAccessToken(function (accessToken) { 
      if (accessToken) { 
       // Create a Graph client 
       var client = MicrosoftGraph.Client.init({ 
        authProvider: (done) => { 
         // Just return the token 
         done(null, accessToken); 
        } 
       }); 
       // Get the Graph /Me endpoint to get user email address 
       client 
        .api('/me') 
        .get((err, res) => { 
         if (err) { 
          callback(null, err); 
         } else { 
          callback(res.mail); 
         } 
        }); 
      } else { 
       var error = { 
        responseText: 'Could not retrieve access token' 
       }; 
       callback(null, error); 
      } 
     }); 
    } 
} 

sendmailの

//sendMail 
function sendMail(message) { 
    getUserEmailAddress(function (userEmail, error) { 
     if (error) { 
      renderError('getUserEmailAddress failed', error.responseText); 
     } else { 
      getAccessToken(function (accessToken) { 
       if (accessToken) { 
        // Create a Graph client 
        var client = MicrosoftGraph.Client.init({ 
         authProvider: (done) => { 
          // Just return the token 
          done(null, accessToken); 
         } 
        }); 
        client 
         .api('/me/sendMail') 
         .header('Authorization', 'Bearer ' + accessToken) 
         .header('Content-Type', "application/json") 
         .post(message, (err, res) => { 
          if (err) { 
           console.log(err); 
           //callback(null, err); 
          } else { 
           console.log(res); 
           //callback(res.value); 
          } 
         }); 
       } else { 
        var error = { 
         responseText: 'Could not retrieve access token' 
        }; 
        //callback(null, error); 
       } 
      }); 
     } 
    }) 
}  

createMail

function createMail(message,callback){ 
     getUserEmailAddress(function(userEmail, error) { 
      if (error) { 
       renderError('getUserEmailAddress failed', error.responseText); 
      } else { 
       getAccessToken(function(accessToken) { 
        if (accessToken) { 
         // Create a Graph client 
         var client = MicrosoftGraph.Client.init({ 
          authProvider: (done) => { 
           // Just return the token 
           done(null, accessToken); 
          } 
         }); 
         client 
          .api('/me/messages') 
          .header('Authorization', 'Bearer ' +accessToken) 
          .header('Content-Type', "application/json") 
          .post(message,(err, res) => { 
           if (err) { 
            callback(res); 
            console.log("创建失败!"); 
           } else { 
            callback(res); 
            console.log("创建成功!"); 
           } 
          }); 
        } else { 
         var error = { responseText: 'Could not retrieve access token' }; 
         //callback(null, error); 
        } 
       }); 
      } 
    }) 
    }  

答えて

0

あり、ここに行くには十分ではありませんが、エラーメッセージは、あなたのaccessTokenが有効でないことを語っています。

要求しているスコープや実行中の承認ワークフローがわからないため、その理由が正確にわからないことがあります。

+0

事前におかげで、私は問題の方法を使用しました。私はaccessTokenにアクセスするためにMicrosoftの方法を使用しています。メーリングリストは正常に取得できますが、メールを送信するときに問題があります。私が注意を払う必要がある特別な点は何ですか? – ronger

+0

だから、私たちは 'accessToken'を入手するためのかなりの" Microsoft Ways "を持っています。独自のスコープが設定された複数のAPI(Microsoft Graph API、Azure Graph APIなど)はもちろん、複数のエンドポイント(v1.0 v2.0)と複数のOAUTHフロー( 'authorization_code'、' implicit'、 'client_credentials') Exchange Webサービス、Yammer APIなど)。あなたがトークンをどのように取得しているかを正確に理解すれば、この場合にそれが拒否されている理由がわかります。 –

+0

ありがとう、私はそれを明確にしたとは思わない、私は[Microsoft Graph API](https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_sendmail) – ronger

関連する問題