首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Stacksjs包从React应用程序中从.bns ()获取userSession.loadUserData名称

无法使用Stacksjs包从React应用程序中从.bns ()获取userSession.loadUserData名称
EN

Stack Overflow用户
提问于 2022-10-06 15:42:20
回答 1查看 35关注 0票数 0

我正在为Stacks构建一个应用程序,使用清晰、智能的契约语言和前端的Stacksjs。从我的React中,我无法从.bns对象中获得userSession名称。据我所研究,它应该在userSession.loadUserData().username之下。

下面是代码片段:

代码语言:javascript
复制
import { AppConfig, UserSession, showConnect } from "@stacks/connect";
import { Person } from "@stacks/profile";
import { Storage } from "@stacks/storage";
import appIcon from "./assets/app_logo.png";

const appConfig = new AppConfig(["store_write", "publish_data"]);

export const userSession = new UserSession({ appConfig });
export const storage = new Storage({ userSession });

console.log(userSession.loadUserData());
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-06 19:16:27

最近不推荐使用username属性,而倾向于让应用程序处理检索BNS名称。如果您有用户的地址,您可以使用这个示例文件查看如何提取BNS名称。

代码语言:javascript
复制
import { StacksMainnet } from '@stacks/network';
import { fetchPrivate } from '@stacks/common';
import { AppConfig, UserSession, showConnect } from '@stacks/connect';
import { Person } from '@stacks/profile';

const appConfig = new AppConfig(['store_write', 'publish_data']);

export const userSession = new UserSession({ appConfig });

export function authenticate() {
  showConnect({
    appDetails: {
      name: 'Todos',
      icon: window.location.origin + '/logo.svg',
    },
    redirectTo: '/',
    onFinish: () => {
      window.location.reload();
    },
    userSession: userSession,
  });
}

export function getUserData() {
  return userSession.loadUserData();
}

export function getPerson() {
  return new Person(getUserData().profile);
}

export const network = new StacksMainnet();

export const fetchFirstName = async (address, network) => {
  try {
    const namesResponse = await fetchPrivate(
      `${network.bnsLookupUrl}/v1/addresses/stacks/${address}`
    );
    const namesJson = await namesResponse.json();
    if ((namesJson.names.length || 0) > 0) {
      return namesJson.names[0];
    }
  } catch (e) {}
  return undefined;
};

这是从以前生活在Hiro的示例Todo应用程序中的这个提交中提取的,尽管它看起来已经被删除了。

https://github.com/hirosystems/todos/pull/104/files#diff-41aaffe0a6b7fb309928aa1e15b50b58bc3348249614110efe07cf89da61c7a2

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73976619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档