2015-10-16 65 views
0

我有一個Meteor應用程序,可以與Facebook應用程序一起用於用戶登錄。在實際的託管版本中,登錄使用實際的Facebook應用程序,但是在本地開發中,該應用程序使用Facebook測試應用程序。
問題是,當我從開發切換到部署時,我需要註釋生產憑證並取消註釋開發證書。我怎麼能解決這個問題?流星賬戶憑證分配

// Removes the config b/c dupliation error and re-defines it 
    // Facebook API config 

// Since Facebook Test app has been created, wrap this in conditional that only executes if on Amazon server and not localhost 


// STRICTLY - Production 
// ServiceConfiguration.configurations.remove({ 
// service: "facebook" 
// }); 

// ServiceConfiguration.configurations.insert({ 
// service: 'facebook', 
// appId: Meteor.settings.FacebookId, 
// secret: Meteor.settings.FacebookSecret 
// }); 


// STRICTLY - Dev 
    ServiceConfiguration.configurations.remove({ 
    service: "facebook" 
}); 

    ServiceConfiguration.configurations.insert({ 
    service: 'facebook', 
    appId: 'id', 
    secret: 'secret' 
    }); 
+0

有代碼刪除和流星設置添加新的服務,你只是改變'settings.json'文件?通常它是開發/生產的獨立文件夾,因此它也解決了這個問題。 –

回答

0

您應該添加開發督促變量您settings.json文件,並與當地meteor --settings settings.json加載它們。該settings.json文件看起來是這樣的:

{ 
"dev": { 
    "public": { 
    "facebook": { 
     "appId": "abc123" 
    } 
    }, 
    "private": { 
    "facebook": { 
     "secret": "456def789" 
    } 
    } 
}, 
"prod": { 
    "public": { 
    "facebook": { 
     "appId": "def234" 
    } 
    }, 
    "private": { 
    "facebook": { 
     "secret": "789ghi101112" 
    } 
    } 
} 

然後,您可以訪問它們,就像你以前:Meteor.settings.dev.public.facebook.appId

公共/私人可能對您的項目過度(我可能已經搞亂了括號),但這應該傳達一般概念。欲瞭解更多信息,請查看這個經常引用的post

+1

我注意到,在你的一些答案中,你不適當地使用代碼片段。代碼片段應該用於SO上支持的客戶端,比如jQuery或普通JavaScript,而不是JSON數據或Meteor代碼。 –

+0

我知道如何訪問我的憑證。我的麻煩是根據我是否在localhost中動態切換憑據。在這個應用程序的部署服務器上,我發佈的代碼非常棒。然而,當我運行meteor run --settings settings.json時,用於登錄的Facebook憑證被設置爲** Public ** Facebook應用程序,而不是** Test ** App。您建議我爲測試應用憑據製作變量。我可以做到這一點,但這並不能解決我遇到的難題。 – chackerian