User Profile
KeshavManuja
Copper Contributor
Joined 2 years ago
User Widgets
Recent Discussions
Unable to send message on behalf of other user in nodejs
Hii community, I am facing difficulty in sending email on behalf of other user, while signing in I am storing user access and refresh tokens and want to send mail in background as server to server communication. I am following these steps: Fetching user refresh token from db Getting new access token using ClientSecretCredential. Using that token to get delegated access token on behalf of that user usingOnBehalfOfCredential. Then using that outcame delegated token to send email on behalf of that user. const clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret); // Use the user's refresh token to get a new access token clientSecretCredential .getToken(['https://graph.microsoft.com/.default'], { refreshToken: tokens.refresh_token, }) .then((tokenResponse) => { const userAccessToken = tokenResponse?.token; console.log('User access token:', userAccessToken); // Use the user's access token in the OnBehalfOfCredential const onBehalfOfCredential = new OnBehalfOfCredential({ tenantId, clientId, clientSecret, userAssertionToken: userAccessToken, }); // Use the getToken method on the OnBehalfOfCredential to get a delegated access token onBehalfOfCredential.getToken(['https://graph.microsoft.com/.default']) .then((delegatedTokenResponse) => { const delegatedAccessToken = delegatedTokenResponse?.accessToken; console.log('Delegated access token:', delegatedAccessToken); // Create a Graph API client with the delegated access token const graphClient = Client.initWithMiddleware({ authProvider: { getAccessToken: async () => { // Return the delegated access token to the Graph API client return delegatedAccessToken; }, }, }); // Prepare the email payload const email = { message: { subject: 'Test Email', body: { contentType: 'Text', content: 'This is a test email sent via Microsoft Graph API.', }, toRecipients: [ { emailAddress: { address: 'email address removed for privacy reasons', // Replace with the recipient's email address }, }, ], }, }; // Use the Graph API client to send the email on behalf of the user graphClient.api('/me/sendMail').post(email) .then((response) => { console.log('Email sent successfully:', response); }) .catch((error) => { console.error('Error sending email:', error); }); }) .catch((error) => { console.error('Error acquiring delegated access token:', error); }); }) .catch((error) => { console.error('Error acquiring user access token:', error); }); Is this flow is correct, I have also tried using MSAL but didn't got any luck. Please help.407Views0likes0Comments
Recent Blog Articles
No content to show