New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot authenticate using `private_key` and `client_email` #1173

Closed
eduardo-tenorio-guiabolso opened this Issue Mar 21, 2016 · 4 comments

Comments

Projects
None yet
3 participants
@eduardo-tenorio-guiabolso

eduardo-tenorio-guiabolso commented Mar 21, 2016

I am trying to connect my NodeJS application to Pub/Sub. Since the production environment is in an AWS instance, I cannot use the default credentials approach. So, my approach is to pass a credentials object with the private key and the client email:

var gcloud_config = {
    projectId: process.env.GCLOUD_PROJECT_ID,
    credentials: {
        client_email : process.env.GCLOUD_CLIENT_EMAIL,
        private_key : process.env.GCLOUD_PRIVATE_KEY
    }
}

According to the docs. This variable is passed as an argument in a class constructor:

constructor(gcloud_config) {
        this.topicName = 'cerebro.TrackeableEvent';

        this.pubsub = gcloud.pubsub(gcloud_config);
        this.topic = this.pubsub.topic(this.topicName);
        this.topic.get({
            autoCreate: true
        }, function(err, data) {
            console.log('PubSubTrackeableEventAPI');
            console.log('err: ' + err);
            console.log('data: ' + data);
        });
    }

When I run locally, everything is OK. There is no err and I can publish to this.topicName. When I run on my staging environment, at AWS, I receive the error Error: Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information.. I don't know what I am doing wrong. I tried several combinations of the GCLOUD_PRIVATE_KEY. With and without the markers "-----BEGIN PRIVATE KEY-----\n" and "\n-----END PRIVATE KEY-----\n".

Is this a bug or am I doing something wrong that I don't know?

@eduardo-tenorio-guiabolso

This comment has been minimized.

Show comment
Hide comment
@eduardo-tenorio-guiabolso

eduardo-tenorio-guiabolso Mar 21, 2016

I guess I found the error. Tomorrow I'll check at the office.

eduardo-tenorio-guiabolso commented Mar 21, 2016

I guess I found the error. Tomorrow I'll check at the office.

@eduardo-tenorio-guiabolso

This comment has been minimized.

Show comment
Hide comment
@eduardo-tenorio-guiabolso

eduardo-tenorio-guiabolso Mar 21, 2016

Changed

private_key : process.env.GCLOUD_PRIVATE_KEY

by

private_key : process.env.GCLOUD_PRIVATE_KEY.replace(/\\n/g, '\n')

eduardo-tenorio-guiabolso commented Mar 21, 2016

Changed

private_key : process.env.GCLOUD_PRIVATE_KEY

by

private_key : process.env.GCLOUD_PRIVATE_KEY.replace(/\\n/g, '\n')
@andershagebakken

This comment has been minimized.

Show comment
Hide comment
@andershagebakken

andershagebakken commented Feb 11, 2017

@biozork

This comment has been minimized.

Show comment
Hide comment
@biozork

biozork Jun 28, 2017

@eduardo-tenorio-guiabolso I had the same challenge with hosting on Heroku, I needed to store the private key in environment variable, and your fix saved my day (doing the newline .replace on the key)

Thank you so much :)

biozork commented Jun 28, 2017

@eduardo-tenorio-guiabolso I had the same challenge with hosting on Heroku, I needed to store the private key in environment variable, and your fix saved my day (doing the newline .replace on the key)

Thank you so much :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment