MagicMirror² v2.12.0 is available! For more information about this release, check out this topic.

Creating Module with API Key/Secret

  • Module Developer

    I read the “Head first developing MM module for extreme beginners” but I am still confused how I can configure it.

    I want to create a MM-Yelp

    I created my app on Yelp Fusion and I have an api_key and secret. Where do I store this api_key? My main.js or into my node_helper.js?

    Sorry, I am a total beginner with JS

  • @lilpkstud U put the default config in the module. If the helper needs it, the module sends it down

    See my Sample module.

  • Module Developer

    @lilpkstud said in Creating Module with API Key/Secret:

    My main.js or into my node_helper.js?

    Neither nor.
    You would create a string variable for both in the module defaults.
    THen in config.js which is only present on your device and not shared via github or else, you can overwrite the empty variable with your api_key and secret.
    There are loads of examples, a few coming to my mind are MMM-Strava or MMM-DarkSkyForecast (or nearly any other weather app.

  • Module Developer

    @lilpkstud Taking MMM-Strava as an example:

    MMM-Strava.js (the main js file)

    Module.register("MMM-Strava", {
        // Default module config.
        defaults: {
            client_id: "",
            client_secret: "",
            period: "recent",   


            //disabled: true,
            module: 'MMM-Strava',
            position: 'center',
            config: {
                client_id: "my_id",
                client_secret: "hereisthesecrethidden",

  • Module Developer

    @lavolp3 Thanks for the example I will look into it more

    However, is there a way to put my request token inside of the request header?

  • Module Developer

    Well, you can call any variable from your config/defaults using the reference this.config.variable.
    Or this.config.requestToken respectively.

    Something important to remember:
    Sometimes, e.g. when you use a callback function, note that the this reference may change (better: the context changes).
    Therefore you will often see something like this in the module codes early in a function:

    self = this

    And later on in the callback function


    Here, the “this” instance that is bound to its context, gives it’s properties to the global variable “self” that can then be used in any context (because it is global).

    For (much) more information check out

  • Module Developer

    Having trouble displaying the information that I received from Yelp API

     getDom: function() {
            var self = this;
            var wrapper = document.createElement("div");
            //If this.dataRequest is not empty
            if( && > 0){
                console.log("MMM-Test: is set" +;
                //Name of Business
                var wrapperDataRequest = document.createElement("h1");
                wrapperDataRequest.innerHTML =;
                wrapperDataRequest.className = 'yelpBusinessName';
            } else {
                console.log("MMM-Test: couldn't be found");
                wrapper.innerHTML = "This didn't work";
            return wrapper;
    MMM-Test: is set{"id":"E8RJkjfdcwgtyoPMjQ_Olg","alias":"four-barrel-coffee-san-francisco","name":"Four Barrel Coffee","image_url":"","is_closed":false,"url":"","review_count":2069,"categories":[{"alias":"coffee","title":"Coffee & Tea"}],"rating":4,"coordinates":{"latitude":37.7670169511878,"longitude":-122.42184275},"transactions":[],"price":"$","location":{"address1":"375 Valencia St","address2":"","address3":"","city":"San Francisco","zip_code":"94103","country":"US","state":"CA","display_address":["375 Valencia St","San Francisco, CA 94103"]},"phone":"+14158964289","display_phone":"(415) 896-4289","distance":1452.8696502343696}

    How can I display name?

    I tried[0].name or but no luck

  • Module Developer

    @lilpkstud is an object, not an array. So should do the trick. In the code above you have only!?

  • Module Developer

    @lavolp3 I deleted because I was getting undefined and I still am

  • Module Developer


    This line of code will show a { on my mirror so I’m assuming everything is turned into a string?

    I used JSON.stringify() in my node_helper file

                wrapperDataRequest.innerHTML =[0];

Log in to reply