userSession.loadUserData() рд╕реЗ userData рд▓реАрдЧреЗрд╕реА рдмреНрд▓реЙрдХрд╕реНрдЯреИрдХ.js рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рдорд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░-рд╕реЗрдЯ 'рдирд╛рдо' рдФрд░ 'рдЕрд╡рддрд╛рд░' рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП let person = new blockstack.Person(userData)
рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдЕрд░реНрдерд╛рддред person.name()
рдФрд░ person.avatarUrl()
ред
рдХрдиреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде, рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЛрдиреЛрдВ person.name() рдФрд░ person.avatarUrl() рдХреЗ рд▓рд┐рдП null
рд▓реМрдЯрд╛рддреА рд╣реИ, рднрд▓реЗ рд╣реА рд╡реЗ рдореМрдЬреВрдж рд╣реЛрдВред
рдпрд╣ рдЙрди рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рд╣реИ рдЬреЛ рд╡реИрдпрдХреНрддрд┐рдХрд░рдг рдХреЗ рдХреБрдЫ рдЕрдВрд╢ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд▓реАрдЧреЗрд╕реА рдмреНрд▓реЙрдХрд╕реНрдЯреИрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ url рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП authReponse рдЯреЛрдХрди рдореЗрдВ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдирдпрд╛ рдмреНрд▓реЙрдХрд╕реНрдЯреИрдХ рдРрдк/рдкреНрд░рдорд╛рдгрдХ рдпрд╣ рд▓реБрдХрдЕрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдРрдкреНрд╕ рдЬреЛ рдЕрднреА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд▓реБрдХрдЕрдк рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ (http://blockstack.github.io/blockstack.js/globals.html#lookupprofile) рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред
loadUserData
рдЕрднреА рднреА рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рдорд╛рдгрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕реНрдерд╛рдиреАрдп рдХреИрд╢ (рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ) рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЙрди рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдЬреЛ publish_data
рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рдХрдиреЗрдХреНрдЯ рдкреНрд░рдорд╛рдгрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддрд╛ рд╣реИред
@hstove рдПрдХрд▓-рдЦрд┐рд▓рд╛рдбрд╝реА рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд░реНрдерди рдХреЛ рд╡рд╛рдкрд╕ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ?
рд▓реБрдХрдЕрдкрдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ @friedger рдЕрднреА рднреА рд╡реИрдпрдХреНрддрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╛рдо() рдФрд░ рдЕрд╡рддрд╛рд░рдпреВрдЖрд░рдПрд▓() рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
@dantrevino lookupProfile
рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡рд╛рджрд╛ рджреЗрддрд╛ рд╣реИ name
рдФрд░ image[i].contentUrl
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред
@friedger рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдореБрдЭреЗ рдХрд┐рд╕рдХреА рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ?
const userData = userSession.loadUserData();
const profile = blockstack.lookupProfile(userData.username);
console.log("profile loaded: ", profile);
profile loaded:
_proto__: Promise
constructor: ╞Т Promise()
then: ╞Т then()
catch: ╞Т catch()
finally: ╞Т finally()
Symbol(Symbol.toStringTag): "Promise"
__proto__: Object
<strong i="9">@type</strong>: "Person"
<strong i="10">@context</strong>: "http://schema.org"
apps: {http://localhost:8080: "https://gaia.blockstack.org/hub/1AdqWQnAMsb8uQsrZy96G2P7HYd1zkpMnr/", https://reclaim.gg: "https://gaia.blockstack.org/hub/1PcbTDbgybtTjkETvo9j5jr92VFKJ4rwWC/", https://boom-money-daily.runkodapps.com: "https://gaia.blockstack.org/hub/19wdVbKFyNqVVSuJf8ppt8P92LjUMdJjpz/", https://noteriot-daily.runkodapps.com: "https://gaia.blockstack.org/hub/1Br9sxhdSw6xQJ3x8vvQNkuAz5X5oAq7a5/", https://runkod.com: "https://gaia.blockstack.org/hub/1NpdmvGsNyisR56CUiZHfZHnZukMYiSjJ5/", тАж}
api: {gaiaHubConfig: {тАж}, gaiaHubUrl: "https://hub.blockstack.org"}
__proto__:
constructor: ╞Т Object()
__defineGetter__: ╞Т __defineGetter__()
__defineSetter__: ╞Т __defineSetter__()
hasOwnProperty: ╞Т hasOwnProperty()
__lookupGetter__: ╞Т __lookupGetter__()
__lookupSetter__: ╞Т __lookupSetter__()
isPrototypeOf: ╞Т isPrototypeOf()
propertyIsEnumerable: ╞Т propertyIsEnumerable()
toString: ╞Т toString()
valueOf: ╞Т valueOf()
toLocaleString: ╞Т toLocaleString()
get __proto__: ╞Т __proto__()
set __proto__: ╞Т __proto__()
рд▓рд╛рдкрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ https://github.com/blockstack/ux/issues/322
рдореИрдВрдиреЗ рдкреНрд░рдорд╛рдгрдХ рдХреЛ рдПрдХ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ - рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ рдЬрд╣рд╛рдВ рд╣рдо authResponse
рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рд▓рд╛ рд░рд╣реЗ рдереЗред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред
@hstove fyi , рдпрд╣ рдЕрднреА рднреА рдХрдХреНрд╖рд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рдирд╛рдо рдФрд░ рдЕрд╡рддрд╛рд░ рд╣реИ:
https://gaia.blockstack.org/hub/1JE8MjzuSi19cBifCvrbsyAjx8PvwhakZp/profile.json
рдореЗрд░реА рд╕рд╛рдЗрди рдЗрди рд╡рд┐рдзрд┐:
signIn() {
const authOptions = {
// The URL you want the user to be redirected to after authentication.
redirectTo: "/wallet",
manifestPath: "/manifest.json",
sendToSignIn: true,
finished: ({ userSession }) => {
this.logInUser(userSession);
},
appDetails: {
name: "Boom.Webby",
icon: `${location.origin}/app-icon.png`,
},
};
authenticate(authOptions);
},
рд▓реЙрдЧрдЗрдирдпреВрд╕рд░ ():
logInUser(context, session) {
console.log("user session: ", session);
let userData = session.loadUserData();
let person = new blockstack.Person(userData);
userData.name = person.name();
userData.avatar = person.avatarUrl();
userData.authenticated = true;
console.log("userData: ", userData);
context.dispatch("setUser", userData);
},
рдФрд░ console.log () рдХреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ .. рдзреНрдпрд╛рди рджреЗрдВ рдирд╛рдо рдФрд░ рдЕрд╡рддрд╛рд░ рдЕрдм рднреА рдХрд░ рд░рд╣реЗ рд╣реИрдВ null
рдЬрдм рд╡рд░реНрдЧ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░:
{username: "fibonacci.id", profile: {тАж}, email: null, decentralizedID: "did:btc-addr:1JE8MjzuSi19cBifCvrbsyAjx8PvwhakZp", identityAddress: "1JE8MjzuSi19cBifCvrbsyAjx8PvwhakZp", тАж}
appPrivateKey: (...)
authResponseToken: (...)
authenticated: (...)
avatar: null
coreSessionToken: (...)
decentralizedID: (...)
email: (...)
gaiaAssociationToken: (...)
hubUrl: (...)
identityAddress: (...)
name: null
profile: (...)
username: (...)
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд╕рдВрдЧреНрд░рд╣рдг рдореЗрдВ blockstack-session
рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдирд╛рдо рдФрд░ рдЫрд╡рд┐ рдкреНрд░реЛрдк рд╡рд╣рд╛рдВ рд╣реЛрддреЗ рд╣реИрдВред
userData: {username: "fibonacci.id", profile: {<strong i="21">@type</strong>: "Person", <strong i="22">@context</strong>: "http://schema.org",тАж}, email: null,тАж}
appPrivateKey: "..."
.
.
.
profile: {<strong i="23">@type</strong>: "Person", <strong i="24">@context</strong>: "http://schema.org",тАж}
.
.
.
image: [{<strong i="25">@type</strong>: "ImageObject", name: "avatar",тАж}]
name: "Fibonacci"
username: "fibonacci.id"
version: "1.0.0"
рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдореБрдЭреЗ рдХрд┐рд╕рдХреА рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ?
@dantravino рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ lookupProfile
рдПрдХ рд╡рд╛рджрд╛ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЖрдк await
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рддреЛ, рдЬреЛ рдЖрдк рд╡рд╛рдкрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдПрдХ рд╡рд╛рджрд╛ рд╣реИред
рдЬрдм рдЖрдк Person
рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрдиреБрд╡рд░реНрддреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж - рдореИрдВ рдЙрд╕ рдкрд░ рдЧреМрд░ рдХрд░реВрдВрдЧрд╛ред
рдЕрд░реЗ @dantravino - рдЖрдк рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ рд╕рд┐рд░реНрдл рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ new Person(userData.profile)
, рдХреЗ рдмрдЬрд╛рдп new Person(userData)
ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реЛ? рд▓реЗрдХрд┐рди рдпрд╣ рдпрд╣рд╛рдВ рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ:
https://blockstack.github.io/blockstack.js/index.html#quickstart -build-an-application