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.7k 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 @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
                    OSZAR »