![](/img/trans.png)
[英]How can I store aws cognito user after sign up in a mongodb database?
[英]How to get user session in Cognito after sign up or login via Google?
我通過谷歌設置授權並登錄 Cognito。 現在我需要獲取用戶屬性,但我不明白該怎么做? 像 getSession 這樣的現有 api 不起作用,並拋出錯誤。
我使用 React 和庫“amazon-cognito-identity-js”。
我以這種方式通過谷歌登錄:
const path = `https://${myDomain}.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=${clientId}&redirect_uri=${redirect}`;
router.push(path);
我的 email 出現在用戶池中 - 沒關系。
成功重定向后,我調用此代碼,因為我需要一個 session 來獲取用戶屬性:
const getSession = (role: TRoles): Promise<IReturnObj> => {
return new Promise((resolve, reject) => {
const user = MyPool.getCurrentUser();
if (!user) {
reject(new Error('Current user not found'));
}
user.getSession((err: Error, session: CognitoUserSession) => {
if (err) {
reject(err);
} else {
resolve({session, user});
}
});
});
};
結果我得到未定義的用戶並拒絕錯誤。 我做錯了什么?
您需要使用redirect_uri
中的憑據創建一個新的CognitoUserSession
。 創建 CognitoUserSession 並將所有相關憑據存儲在您的CognitoUserSession
中后,您將能夠成功使用getSession
。
例子:
重定向_uri
https://www.example.com#access_token={{accessToken}}&id_token={{idToken}}&token_type=Bearer&expires_in=3600
導入相關對象
import {
CognitoUser,
CognitoAccessToken,
CognitoIdToken,
CognitoRefreshToken,
CognitoUserSession,
} from "amazon-cognito-identity-js";
然后提取accessToken、idToken,創建你的session如下:
const AccessToken = new CognitoAccessToken({
AccessToken: accessToken,
});
const IdToken = new CognitoIdToken({ IdToken: idToken });
const RefreshToken = new CognitoRefreshToken({
RefreshToken: idToken,
});
const sessionData = {
IdToken,
AccessToken,
RefreshToken,
};
const userSession = new CognitoUserSession(sessionData);
const userData = {
Username: email, // get this from token/another method
Pool,
};
const cognitoUser = new CognitoUser(userData);
cognitoUser.setSignInUserSession(userSession);
cognitoUser.getSession((err, session) => {
if (session.isValid()) {
// access your session
}
// throw error
});
@user10290365 的回答解決了我的問題,這幾乎正是 OP 遇到的問題,我花了太長時間挖掘文檔試圖弄清楚這個問題。
非常感謝您的詳細回答。 我會贊成你的回應,但我缺乏聲譽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.