问题描述
我正在与appid-serversdk-nodejs一起工作,并且我的代码可以正常工作,无论本地还是在IBM云中,一切正常。
但是我必须手动切换APP-URL(localhost:3000与.eu-gb.mybluemix.net) 我知道我可以在不提供护照设置的情况下做到这一点,但是我如何拥有一个适用于以下代码的代码库:
- localdev测试
- ibm云中的实例 ibm中的
- 生产实例 云
我正在谈论这段代码:
// The redirectUri value can be supplied in three ways:
// 1. Manually in new WebAppStrategy({redirectUri: "...."})
// 2. As environment variable named redirectUri
// 3. If none of the above was supplied the App ID SDK will try to retrieve
// application_uri of the application running on IBM Cloud and append a
// default suffix "/ibm/bluemix/appid/callback"
passport.use(new WebAppStrategy({
tenantId: "removed",clientId: "removed",secret: "removed",oauthServerUrl: "https://eu-gb.appid.cloud.ibm.com/oauth/v4/REMOVED"
redirectUri: "https://REMOVED.eu-gb.mybluemix.net" + CALLBACK_URL
//redirectUri: "http://localhost:3000" + CALLBACK_URL
}));
tenantId: process.env.APPID_tenantId,clientId: process.env.APPID_clientId,secret: process.env.APPID_secret,oauthServerUrl: process.env.APPID_oauthServerUrl,redirectUri: process.env.APPID_redirectUri + CALLBACK_URL
现在,我必须更改.env文件,这将导致新的提交和构建。 我想利用app-id和我们在IBM云中的Node服务器之间的连接。
如果我不提供redirectUri或整个WebAppStrategy,则会收到错误消息
解决方法
您正在使用process.env。*做正确的事情(技术上),当然还有多种其他方式可以做到这一点,但这是另一个主题(在这种情况下,我个人经常使用CUPS,.env容易导致您将机密提交给版本控制的情况)
我确定您已在App ID实例中将所有url:s都作为重定向uri:s提供(如果出现问题,无论如何都会给出非常明显的错误)。
您没有分享正在得到的那些错误,但是您可以检查一些事情。
a)本书中较老的技巧-在逻辑上进行一些调试输出,以验证设置为环境变量的值实际上在运行时存在。
b)就像您通常在云中执行https但在本地执行http一样,您可能需要有条件地进行设置 Cookie:{安全:正确} 仅适用于云部署,不适用于本地。