“无法读取未定义的属性 'uid'”错误 - 格子链接令牌
Posted
技术标签:
【中文标题】“无法读取未定义的属性 \'uid\'”错误 - 格子链接令牌【英文标题】:"Cannot read property 'uid' of undefined" error - Plaid link token“无法读取未定义的属性 'uid'”错误 - 格子链接令牌 【发布时间】:2022-01-15 14:55:56 【问题描述】:我在尝试创建格子标记时收到“无法读取未定义的属性 'uid'”...。我花了大约 3 天的时间试图让它工作。
有人知道如何解决吗?
获取Plaid令牌的云函数
//PLAID - create link Token plaid Nat
const plaid = require("plaid");
exports.createPlaidLinkToken = functions.https.onCall(async (data, context) =>
const customerId = context.auth.uid;
const plaidClient = new plaid.Client(
clientID: functions.config().plaid.client_id,
secret: functions.config().plaid.secret,
env: plaid.environments.development,
options:
version: "2019-05-29",
,
);
return plaidClient.createLinkToken(
user:
client_user_id: customerId,
,
client_name: "Reny",
products: ["auth"],
country_codes: ["US"],
language: "en",
)
.then((apiResponse) =>
const linkToken = apiResponse.link_token;
return linkToken;
)
.catch((err) =>
console.log(err);
throw new functions.https.HttpsError(
"internal",
" Unable to create plaid link token: " + err
);
);
);
快捷功能
class func createLinkToken(completion: @escaping (String?) -> ())
//this is the firebase function
Functions.functions().httpsCallable("createPlaidLinkToken").call (result, error) in
if let error = error
debugPrint(error.localizedDescription)
return completion(nil)
guard let linkToken = result?.data as? String else
return completion(nil)
completion(linkToken)
【问题讨论】:
【参考方案1】:您的代码中唯一的.uid
位于这一行:
const customerId = context.auth.uid;
所以看起来context.auth
是undefined
。在 Cloud Functions 代码中,您可以使用以下方法处理此问题:
exports.createPlaidLinkToken = functions.https.onCall(async (data, context) =>
// Checking that the user is authenticated.
if (!context.auth)
// Throwing an HttpsError so that the client gets the error details.
throw new functions.https.HttpsError('failed-precondition', 'The function must be called ' +
'while authenticated.');
const customerId = context.auth.uid;
...
此处的新代码来自 handling errors in callable Cloud Functions 上的 Firebase 文档。
您还需要在 Swift 代码中使用 check if the user is signed in。
【讨论】:
太尴尬了,你的回答让我意识到我一直在测试,但用户没有经过身份验证哈哈。我通过了身份验证,并且能够传递该错误,现在我收到“未处理的错误 TypeError:无法读取未定义的属性‘开发’”,但我想这与环境有关,我明天可以调试它。谢谢!以上是关于“无法读取未定义的属性 'uid'”错误 - 格子链接令牌的主要内容,如果未能解决你的问题,请参考以下文章