SimpleGraphClient: Invalid token received

%3CLINGO-SUB%20id%3D%22lingo-sub-3122365%22%20slang%3D%22en-US%22%3ESimpleGraphClient%3A%20Invalid%20token%20received%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-3122365%22%20slang%3D%22en-US%22%3E%3CP%3EI%20started%20developing%20a%20new%20MS%20Teams%20Application%20and%20I%20am%20trying%20to%20authenticate%20a%20MS%20Teams%20user%20on%20my%20app's%20backend%20by%20following%20the%20source%20code%20of%26nbsp%3B%3CBR%20%2F%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FOfficeDev%2FMicrosoft-Teams-Samples%2Ftree%2Fmain%2Fsamples%2Fapp-sso%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehttps%3A%2F%2Fgithub.com%2FOfficeDev%2FMicrosoft-Teams-Samples%2Ftree%2Fmain%2Fsamples%2Fapp-sso%3C%2FA%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3EBut%20unfortunately%20when%20I%20am%20trying%20to%20create%20a%26nbsp%3BSimpleGraphClient%20with%20the%20token%20acquired%20by%20this%20function%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-applescript%22%3E%3CCODE%3E%2F%2F%20Get%20Access%20Token%0Aconst%20getAccessToken%20%3D%20async(req)%20%3D%26gt%3B%20%7B%0A%20%20%20%20return%20new%20Promise((resolve%2C%20reject)%20%3D%26gt%3B%20%7B%0A%20%20%20%20%20%20%20%20const%20%7B%20tenantId%2C%20token%20%7D%20%3D%20reqData(req)%3B%0A%0A%20%20%20%20%20%20%20%20const%20scopes%20%3D%20%5B'User.Read'%5D%3B%20%2F%2F%5B'User.Read'%2C%20'email'%2C%20'offline_access'%2C%20'openid'%2C%20'profile'%5D%3B%0A%20%20%20%20%20%20%20%20const%20url%20%3D%20%60https%3A%2F%2Flogin.microsoftonline.com%2F%24%7B%20tenantId%20%7D%2Foauth2%2Fv2.0%2Ftoken%60%3B%0A%20%20%20%20%20%20%20%20const%20params%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20client_id%3A%20process.env.MicrosoftAppId%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20client_secret%3A%20process.env.MicrosoftAppPassword%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20grant_type%3A%20'urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20assertion%3A%20token%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20requested_token_use%3A%20'on_behalf_of'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20scope%3A%20scopes.join('%20')%0A%20%20%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20eslint-disable-next-line%20no-undef%0A%20%20%20%20%20%20%20%20fetch(url%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20method%3A%20'POST'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20body%3A%20querystring.stringify(params)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20headers%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Accept%3A%20'application%2Fjson'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20'Content-Type'%3A%20'application%2Fx-www-form-urlencoded'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D).then(result%20%3D%26gt%3B%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(result.status%20!%3D%3D%20200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20result.json().then(json%20%3D%26gt%3B%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20eslint-disable-next-line%20prefer-promise-reject-errors%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20reject(%7B%20error%3A%20json.error%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20result.json().then(async%20json%20%3D%26gt%3B%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolve(json.access_token)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D)%3B%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20am%20taking%20the%20exception%20%3A%3CBR%20%2F%3E%3CEM%3Ethrow%20new%20Error('SimpleGraphClient%3A%20Invalid%20token%20received.')%3B%3CBR%20%2F%3E%3C%2FEM%3EWhat%20am%20I%20doing%20wrong%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-3122365%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EMicrosoft%20Teams%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-3124525%22%20slang%3D%22en-US%22%3ERe%3A%20SimpleGraphClient%3A%20Invalid%20token%20received%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-3124525%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F981344%22%20target%3D%22_blank%22%3E%40christosjubile%3C%2FA%3E%26nbsp%3B-%20Could%20you%20please%20follow%20below%20troubleshoot%20doc%20and%20check%20if%20it%20helps%3A%3CBR%20%2F%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Foffice%2Fdev%2Fadd-ins%2Fdevelop%2Ftroubleshoot-sso-in-office-add-ins%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3ETroubleshoot%20error%20messages%20for%20single%20sign-on%20(SSO)%20-%20Office%20Add-ins%20%7C%20Microsoft%20Docs%3C%2FA%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CA%20href%3D%22https%3A%2F%2Fserviceaide.atlassian.net%2Fwiki%2Fspaces%2FCloudSMGoldfish%2Fpages%2F4558884%2FSSO%2B-%2BError%2BInvalid%2BSingle%2Bsign-on%2Btoken%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3ESSO%20-%20Error%20Invalid%20Single%20sign-on%20token%20-%20Intelligent%20Service%20Management%20-%20English%20-%20Confluence%20(atlassian.net)%3C%2FA%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E
Contributor

I started developing a new MS Teams Application and I am trying to authenticate a MS Teams user on my app's backend by following the source code of 
https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/app-sso

But unfortunately when I am trying to create a SimpleGraphClient with the token acquired by this function

 

 

// Get Access Token
const getAccessToken = async(req) => {
    return new Promise((resolve, reject) => {
        const { tenantId, token } = reqData(req);

        const scopes = ['User.Read']; //['User.Read', 'email', 'offline_access', 'openid', 'profile'];
        const url = `https://login.microsoftonline.com/${ tenantId }/oauth2/v2.0/token`;
        const params = {
            client_id: process.env.MicrosoftAppId,
            client_secret: process.env.MicrosoftAppPassword,
            grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
            assertion: token,
            requested_token_use: 'on_behalf_of',
            scope: scopes.join(' ')
        };

        // eslint-disable-next-line no-undef
        fetch(url, {
            method: 'POST',
            body: querystring.stringify(params),
            headers: {
                Accept: 'application/json',
                'Content-Type': 'application/x-www-form-urlencoded'
            }
        }).then(result => {
            if (result.status !== 200) {
                result.json().then(json => {
                    // eslint-disable-next-line prefer-promise-reject-errors
                    reject({ error: json.error });
                });
            } else {
                result.json().then(async json => {
                    resolve(json.access_token);
                });
            }
        });
    });
};

 

 

 

I am taking the exception :
throw new Error('SimpleGraphClient: Invalid token received.');
What am I doing wrong?

1 Reply