You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React-Native/Amplify:为已有用户关联社交账号

解决Amplify Auth关联社交账号时的"There is already a signed in user"错误

问题原因

signInWithRedirect 是用于用户首次登录或切换登录身份的方法,当已有用户处于登录状态时调用它,就会抛出该异常。关联已有用户的社交账号需要使用专门的身份关联API,而非通用登录方法。

解决方案

1. 获取社交身份凭证

先通过社交授权流程获取第三方身份凭证,避免触发Amplify自动登录逻辑:

import { Auth } from 'aws-amplify';

const getSocialCredentials = async (provider) => {
  // 触发社交授权跳转,获取授权凭证
  const authResult = await Auth.federatedSignIn({ provider });
  return authResult?.credentials;
};

2. 关联社交账号到当前用户

拿到社交凭证后,调用linkFederatedIdentity方法完成关联:

const linkSocialAccount = async (provider) => {
  try {
    const socialCreds = await getSocialCredentials(provider);
    await Auth.linkFederatedIdentity(socialCreds);
    console.log("社交账号关联成功");
  } catch (error) {
    console.error("关联失败:", error);
  }
};

3. 验证关联状态

关联完成后,可通过以下代码查看当前用户的关联身份列表:

const checkLinkedIdentities = async () => {
  const session = await Auth.fetchAuthSession();
  console.log("已关联的社交身份:", session.idToken.payload.identities);
};

注意事项

  • 确保Cognito用户池已配置对应社交身份提供商(如Google、Facebook),且Amplify配置文件中正确引入了该提供商的参数。
  • 若出现"Identity already exists"错误,说明该社交账号已绑定到其他用户,需提示用户先解绑原关联再尝试。

内容的提问来源于stack exchange,提问作者Hamza Najib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:27:04