MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    MMM-Strava ID Unauthorized

    Scheduled Pinned Locked Moved Health
    17 Posts 4 Posters 3.8k Views 4 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • BerkSmash1984B Offline
      BerkSmash1984 @sdetweil
      last edited by

      @sdetweil my bad, thanks! I corrected my post

      S 1 Reply Last reply Reply Quote 1
      • S Offline
        sdetweil @BerkSmash1984
        last edited by

        @BerkSmash1984 not bad, maybe you didn’t know. lol

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        1 Reply Last reply Reply Quote 0
        • BerkSmash1984B Offline
          BerkSmash1984
          last edited by

          @mumblebaj just removed the MMM-Strava module and installed from scratch. Still seeing the same issue. Would you by chance be able to do any direct troubleshooting with me? I am on discord in the MM channel and can dm you in there, if you have any free time at any point.

          Note: when I click the authorize button a the Stava auth site after being redirected there from my MM on the RPI, in Electron, I see this generated:

          [03.05.2022 10:13.13.537] [ERROR] Whoops! There was an uncaught exception…
          [03.05.2022 10:13.13.538] [ERROR] Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
          at new NodeError (node:internal/errors:371:5)
          at ServerResponse.setHeader (node:_http_outgoing:576:11)
          at ServerResponse.header (/home/jberk1984/MagicMirror/node_modules/express/lib/response.js:776:10)
          at ServerResponse.location (/home/jberk1984/MagicMirror/node_modules/express/lib/response.js:893:15)
          at ServerResponse.redirect (/home/jberk1984/MagicMirror/node_modules/express/lib/response.js:931:18)
          at /home/jberk1984/MagicMirror/modules/MMM-Strava/node_helper.js:185:10
          at /home/jberk1984/MagicMirror/modules/MMM-Strava/node_helper.js:451:5
          at node:fs:2122:7
          at FSReqCallback.oncomplete (node:fs:188:23) {
          code: ‘ERR_HTTP_HEADERS_SENT’

          So the issue seems to be whatever is causing that. I never do see the token.js being generated after clicking the authorize button. My client and secret ID are correct in my config.js file (can’t tell you how many times I have checked to make sure)

          S 1 Reply Last reply Reply Quote 0
          • S Offline
            sdetweil @BerkSmash1984
            last edited by sdetweil

            @BerkSmash1984 said in MMM-Strava ID Unauthorized:

            Cannot set headers after they are sent to the client

            so, this error is typically caused by some code doing two sends for an incoming request

            the module sets up a little server to receive and does a redirect response…

            but this could be an async problem
            start sending one response, continue while it runs and then fall into another send… oops…

            I only made a cursory look at the code. i have done similar things in some of my coding here and on other platforms.

            I don’t ‘see’ it, but there is a library in there too

            this says it is handling a callback on request complete,

            line 185 is in the handling of the token auth . but the stravea lib is calling back into the function (function (err, payload, limits) at line 176
            so the node_helper called strava, who called us back at the function on line 185 ( (err, data) => { (err, data) => { ) which does a redirect… WHILE the strava request to get the auth token handler is still active…

            			strava.oauth.getToken(authCode, function (err, payload, limits) {
            				if (err) {
            					console.error(err);
            					res.redirect(`/${self.name}/auth/?error=${err}`);
            					return;
            				}
            				// Store tokens
            				self.saveToken(clientId, payload.body, (err, data) => {    // line 185
            					// redirect route
            					res.redirect(`/${self.name}/auth/?status=success`);
            				});
            			});
            

            line 451, is in the end of the saveFile() function, supposedly to save the tokens.json

            	saveToken: function (clientId, token, cb) {
            		var self = this;
            		this.readTokens();
            		// No token for clientId - delete existing
            		if (clientId in this.tokens && !token) {
            			delete this.tokens[clientId];
            		}
            		// No clientId in tokens - create stub
            		if (!(clientId in this.tokens) && token) {
            			this.tokens[clientId] = {};
            		}
            		// Add token for client
            		if (token) {
            			this.tokens[clientId].token = token;
            		}
            		// Save tokens to file
            		var json = JSON.stringify(this.tokens, null, 2);
            		fs.writeFile(this.tokensFile, json, "utf8", function (error) {
            			if (error && cb) {
            				cb(error);
            			}
            			if (cb) {
            				cb(null, self.tokens);  // line 451  --- this calls back into the  ( (err, data) =>)  function
            			}
            		})
            

            at FSReqCallback.oncomplete (node:fs:188:23) {

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            1 Reply Last reply Reply Quote 0
            • R Offline
              rmonteroc
              last edited by

              @BerkSmash1984 did you ever fixed this issue?

              I just had the same issue, and it turns out it was a permissions issue in the MagicMirror folder, I changed the permissions of the folder and re-authorized, it’s now working.

              Best regards

              1 Reply Last reply Reply Quote 0
              • 1
              • 2
              • 2 / 2
              • First post
                Last post
              Enjoying MagicMirror? Please consider a donation!
              MagicMirror created by Michael Teeuw.
              Forum managed by Sam, technical setup by Karsten.
              This forum is using NodeBB as its core | Contributors
              Contact | Privacy Policy
                OSZAR »