我正在为Stacks构建一个应用程序,使用清晰、智能的契约语言和前端的Stacksjs。从我的React中,我无法从.bns对象中获得userSession名称。据我所研究,它应该在userSession.loadUserData().username之下。
下面是代码片段:
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());发布于 2022-10-06 19:16:27
最近不推荐使用username属性,而倾向于让应用程序处理检索BNS名称。如果您有用户的地址,您可以使用这个示例文件查看如何提取BNS名称。
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://stackoverflow.com/questions/73976619
复制相似问题