2016-11-29 2 views
0

Ich versuche, meine settings.json-Datei in der richtigen Weise einzurichten, aber ich kann nicht scheinen, es zu arbeiten.Wie man Amazon-Zugangsdaten mit Facebook-Zugangsdaten in settings.json verbindet

Ich habe derzeit meine Amazon S3-Anmeldeinformationen in der Datei gespeichert, aber wenn ich Weibo oder FB-Anmeldeinformationen hinzufügen möchte, stürzt meine App ab.

Was ist der richtige Weg, um mehrere Dienste hinzuzufügen?

Im Moment sieht es wie folgt aus:

ServiceConfiguration.configurations.upsert(
 
    { service: "weibo" }, 
 
    { 
 
    $set: { 
 
     clientId: "1292962797", 
 
     loginStyle: "popup", 
 
     secret: "75a730b58f5691de5522789070c319bc" 
 
    } 
 
    } 
 
);

Und das gleiche:

{ 
 
\t "AWSAccessKeyId": "Amazon key", 
 
\t "AWSSecretAccessKey": "Amazon secret" 
 
}

ich folgendes hinzufügen müssen geht um die FB-Anmeldeinformationen. Was ist der richtige Weg, all diese in einer Datei zu kombinieren?

Wenn ich mein Setup-Datei wie vorgeschlagen unten ich diese Fehlermeldung erhalten: Fehler: Spiel Fehler: Fehlende Schlüssel 'AWSAccessKeyId'

Das ist mein settings.json Setup im Moment:

{ 
 
    "public": { 
 

 
    }, 
 
    "private": { 
 
    "facebook": { 
 
     "appId": "FBId", 
 
     "secret": "FBsecret" 
 
    }, 
 
    "weibo": { 
 
     "clientId": "WeiboId", 
 
     "secret": "WeiboSecret" 
 
    }, 
 
    "aws": { 
 
     "bucket": "ec2016", 
 
     "AWSAccessKeyId": "S3Id", 
 
     "AWSSecretAccessKey": "S3Secret", 
 
     "region": "eu-central-1" 
 
    } 
 
    } 
 
}

UPDATE:

Hilfe im Anschluss an die ich hier erhielt ich meine setting.json Datei einrichten und ein andere Datei auf dem Server namens configure-services. Es sieht aus wie das. Nach dem Reparieren eines Tippfehlers (Duh ...) funktioniert jetzt alles! Vielen Dank!

const p = Meteor.settings.private; 
 

 
const faceAppId = p.facebook.appId; 
 
const faceSecret = p.facebook.secret; 
 

 
const S3KeyId = p.aws.key; 
 
const S3AccessKey = p.aws.secret; 
 

 
ServiceConfiguration.configurations.upsert({ 
 
    service: 'facebook' 
 
}, { 
 
    $set: { 
 
    service: 'facebook', 
 
    appId: faceAppId, 
 
    secret: faceSecret, 
 
    }, 
 
}); 
 

 
Slingshot.fileRestrictions("myImageUpload", { 
 
    allowedFileTypes: ["image/png", "image/jpeg", "image/gif", "video/mp4", "video/avi", ], 
 
    maxSize: 10 * 1024 * 1024, // 10 MB (use null for unlimited) 
 
}); 
 

 
Slingshot.createDirective('myImageUpload', Slingshot.S3Storage, { 
 
    bucket: p.aws.bucket, 
 
    region: p.aws.region, 
 
    AWSAccessKeyId: S3KeyId, 
 
    AWSSecretAccessKey: S3AccessKey, 
 
    acl: 'public-read', 
 

 
    authorize: function() { 
 
    //Deny uploads if user is not logged in. 
 
    if (!this.userId) { 
 
     var message = "Please login before posting files"; 
 
     throw new Meteor.Error("Login Required", message); 
 
    } 
 
    return true; 
 
    }, 
 

 
    key: function (file) { 
 
    //Store file into a directory by the user's username. 
 
    var user = Meteor.users.findOne(this.userId); 
 
    return user.username + "/" + file.name; 
 
    } 
 
});

+0

Was meinen Sie Ihre Anwendung abstürzt ? Kannst du den Fehler einfügen? – Almaju

+0

Ow ja sorry, Also, wenn ich versuche, die beiden zu kombinieren (I kopieren Sie einfach den zweiten Code unter der ersten Paste) bekomme ich diesen Fehler: Einstellungen-development.json: parsen Einstellungen Fehler beim Lesen – Deelux

+0

Datei Es funktioniert wenn ich nur die Amazon S3-Informationen in der Datei btw. – Deelux

Antwort

1

Dies ist das Format, das ich in der Regel für settings.json Datei:

{ 
    "public": { 

    }, 
    "private": { 
    "facebook": { 
     "namespace": "", 
     "appId": "", 
     "secret": "" 
    }, 
    "google": { 
     "clientId": "", 
     "secret": "" 
    }, 
    "aws": { 
     "bucket": "", 
     "key": "", 
     "secret": "", 
     "region": "" 
    } 
    } 
} 

Dann sie wie folgt verwendet werden:

const p = Meteor.settings.private; 

const faceAppId = p.facebook.appId; 
const faceSecret = p.facebook.secret; 

const ggClientId = p.google.clientId; 
const ggSecret = p.google.secret; 

ServiceConfiguration.configurations.upsert({ 
    service: 'facebook' 
}, { 
    $set: { 
    service: 'facebook', 
    appId: faceAppId, 
    secret: faceSecret, 
    } 
}); 


ServiceConfiguration.configurations.upsert({ 
    service: 'google' 
}, { 
    $set: { 
    service: 'google', 
    clientId: ggClientId, 
    secret: ggSecret, 
    } 
}); 

Slingshot.createDirective('imageUpload', Slingshot.S3Storage, { 
    bucket: p.aws.bucket, 
    region: p.aws.region, 
    AWSAccessKeyId: p.aws.key, 
    AWSSecretAccessKey: p.aws.secret, 
    acl: 'public-read', 
    maxSize: 20 * 1024 * 1024, 
    allowedFileTypes: ['image/png', 'image/jpeg', 'image/gif'], 
    authorize: function() { 
    // ... 
    }, 
    key: function() { 
    // ... 
    } 
}); 
+0

Wenn ich die Datei "settings.json" wie folgt hinzufügen, erhalte ich die folgende Fehlermeldung: Fehler: Übereinstimmungsfehler: Fehlender Schlüssel 'AWSAccessKeyId' Ich benutze edgee_slingshot, um meine Dateien auf meinen Amazon S3-Server hochzuladen. Ich habe auch bereits versucht, die ClientId und Secret in dem Format, das Sie gerade geliefert haben, umzubenennen. Irgendwelche anderen Ideen? – Deelux

+0

Ich schaffte es immer noch nicht, die beiden zu arbeiten, irgendwelche anderen Ideen? – Deelux

+0

@Deelux Ich habe eine Möglichkeit hinzugefügt, Slingshot-Anweisung zu erstellen, hoffe, es hilft – Khang