当前位置: 首页 > 知识库问答 >
问题:

如何通过Useraccounts包从第三方社交登录中提取用户名?

范承教
2023-03-14

我使用用户帐户包流星。

我已经配置好了,用户名/电子邮件密码登录正在工作,用户名在登录时显示(用户需要在注册时输入用户名)。

但是,当我单击社交登录按钮登录时,我已登录,但没有注册用户名。所以无论我做什么,日志用户名都不会显示任何内容,即没有用户名。

我按照以下链接进行配置:useraccounts链接到第三方登录

我有下面的lib/config.js

ServiceConfiguration.configurations.update(
      { "service": "facebook" },
      {
        $set: {
          "appId": "XXXXXXXXXXXXXXX",
          "secret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        }
      },
      { upsert: true }
    );

下面是修改电子邮件/密码登录的步骤

var pwd = 
AccountsTemplates.removeField('password');
AccountsTemplates.removeField('email');
AccountsTemplates.addFields([
  {
    _id: "username",
    type: "text",
    required: true,
    displayName: "username",
    minLength: 5,
    errStr: 'error.minChar'
  },

我可能错过了它大,但我没有看到任何讨论提取用户名从第三方登录。有人知道如何进一步配置吗?例如,如果Facebook或Twitter用户名是ABC,我希望ABC在第三方社交登录时在html" target="_blank">应用程序中反映为用户名。

最新消息

Accounts.onCreateUser(function(options, user){
  if(user.services){

    if(user.services.google) {
      user.username = user.services.google.username;
    } 
    else if(user.services.twitter) {
      user.username = user.services.twitter.username;
    } 
    else if(user.services.facebook) {
      user.username = user.services.facebook.username;
    }
    else if(user.services.github) {
      user.username = user.services.github.username;
    }
  }
  if(options.profile){
    user.profile = options.profile;
  }
  return user;
});

共有1个答案

蓬威
2023-03-14

您可以在用户创建时注册服务器端钩子,并强制用户名为您想要的任何名称,包括来自第三方服务的用户名。

https://docs.meteor.com/#/full/accounts_oncreateuser

Accounts.onCreateUser(function(options, user){
  if(user.services){
    if(user.services.google){
      user.username = user.services.google.name;
    }
    else if(user.services.twitter){
      [..]
    }
    [...]
  }
  //
  if(options.profile){
    user.profile = options.profile;
  }
  return user;
});

但是请注意,这不会强制实现用户名唯一性,因为facebook上的两个人显然可以共享同一个名称,因此如果这是应用程序中的一个问题,您必须自己解决。

 类似资料:
  • 我正试图通过一个第三方库登录我的meteor站点,比如下面的库:https://gist.github.com/gabrielhpugliese/4188927 在server.js中,我有: PS.在服务器端,users集合看起来很好。流星令牌和其他一切都在那里。

  • 我是一个新的Keycloak和尝试理解和整合Keycloak与我的react应用程序以下方式。 我想使用我已成功配置了领域、客户端和身份提供程序(如google、fb、GitHub等)的社交登录机制 这样我就可以保护我应用程序,并仅当用户通过社交登录机制成功地进行身份验证时才允许访问特定的页面/组件 我正在努力实现的是: 可以“自动”将通过社交登录登录到keycloak服务器用户注册到keyclo

  • 读取用户登陆信息 调用地址 https://secure.bilibili.tv/login 参数 字段 必选 类型 说明 api true string 申请时填入的API地址 appkey true string 申请时系统提供的Key sign true string 校验密钥 md5(“api=“) 回调 编码为UTF-8 返回值字段 字段类型 字段说明 mid int 会员编号 unam

  • 1.如何获取APPID和APPSECRET这两个参数? 1.需登录微信开放平台配置,具体可参考使用手册。 2.申请QQ互联申请链接 2.升级以后,微信浏览底部图标不显示,应该检查哪里? 后台店铺手机端底部导航设置

  • 我在这里找一些社会融合专家来启发我这个困惑。我的Web服务器正在使用Spring安全来验证用户登录,注册。我最近在我的网络服务器上实现了Spring社交,一切都非常顺利。以fb为例,当用户从facebook登录时,Spring Social将构建outh url并将用户重定向到facebook。一旦用户在facebook认证,它将重定向他们回到我的网站。 我需要实现我的移动应用程序(html5 p

  • 我正试图使我的网站的一部分,是限制只有那些人谁登录。 目前,我可以使用:检查它们的登录状态