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 4.3k 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 @mumblebaj
      last edited by

      @mumblebaj Thanks for the response.

      • yes npm install was run the MMM-Strave folder
      • yes I did the browser auth on the RPI as well
      • no, I do not see a tokens file in the MMM-Strava folder after attempting the authorization:
        90f6ba7f-f899-400e-9237-eecf527d394f-image.png
      BerkSmash1984B 1 Reply Last reply Reply Quote 0
      • BerkSmash1984B Offline
        BerkSmash1984 @BerkSmash1984
        last edited by BerkSmash1984

        @mumblebaj I did attempt a reinstall of the MMM-Strava module but can certainly do it again. Is best method to rm-rf the MMM-Strava modiue folder and then redo the steps listed in the Github for MMM-Strava?

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

          @BerkSmash1984 u can edit your posts… don’t have to leave pad text, wrong info, bad tag…

          Sam

          How to add modules

          learning how to use browser developers window for css changes

          BerkSmash1984B 1 Reply Last reply Reply Quote 0
          • 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