0

我正在使用appid-serversdk-nodejs并且我的代码工作正常,并且在本地和 IBM 云中一切正常。

但是我必须手动切换 APP-URL (localhost:3000 vs .eu-gb.mybluemix.net) 我知道我可以在不提供护照设置的情况下做到这一点,但是我怎样才能拥有一个适用于以下情况的代码库:

  • 本地开发测试
  • 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
}));

更新:我已将数据移至 .env 文件,但这并不能解决我的问题。

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,我会收到错误

4

1 回答 1

1

您正在使用 process.env.* 做正确的事情(技术上),当然还有多种其他方法可以做到这一点,但这是另一个主题(我个人在这些情况下经常使用 CUPS,.env 很容易导致以下情况您将秘密提交给版本控制)

我确定您已在 App ID 实例中将所有 url:s 作为重定向 uri:s 提供(如果这是问题的话,无论如何都会给出非常明显的错误)。

你没有分享你得到的错误是什么,但你可以检查一些事情。

a) 书中较老的技巧 - 在您的逻辑上进行一些调试输出,以验证您设置为环境变量的值是否在运行时实际存在。

b) 正如您通常在云中使用 https 而在本地使用 http,您可能需要有条件地设置 cookie: { secure: true } 仅用于云部署,而不是本地。

于 2020-11-23T09:02:53.777 回答