如何在 AWS Cognito/Amplify 中的 federatedSignIn 中设置自定义属性

Cit*_*cid 5 amazon-web-services federated vue.js amazon-cognito aws-amplify

我需要在注册用户时创建一些自定义属性。我可以通过以下方式成功做到这一点(Vue):

methods: {
  async signUp () {
    const { username, password } = this.form;

    try {
      this.error = '';
      await this.$Amplify.Auth.signUp({
        username,
        password,
        attributes: {
          'custom:my_attribute': 'some data',
        },
      });
      this.isSignedUp = true;
    } catch (e) {
      this.error = e.message;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

不过我想对 做类似的事情federatedSignIn。是否有可能使用该方法保存自定义属性?还有其他方法可以实现吗?

我正在尝试这个:

await this.$Amplify.Auth.federatedSignIn({ provider, attributes: { 'custom:my_attribute': 'some data' } })
Run Code Online (Sandbox Code Playgroud)

但这不起作用。

我正在使用认知用户池。

Sig*_*gex 0

对于任何其他试图弄清楚您如何发送自定义属性的人。我必须通过 Cognito lambda 触发器来做到这一点。您需要使用预令牌触发器。这允许您修改当前会话。但您还必须通过以下方式保留对用户记录的更改

https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html

  • 比方说,在 `federatedSignIn()` 期间,我还需要传递有关用户是否选择了项目 A 或项目 B 的详细信息(假设我的注册表单允许用户在注册时选择某些项目)。通过基于常规用户名/密码的注册,我可以创建自定义属性来传递此信息 - 但是按照您的方法,我如何传递此信息,因为 `federatedSignIn()` 不允许任何属性(提供者除外)传递给它...那么,在预令牌触发器中,我如何知道用户选择了哪个项目? (2认同)