Stacks-wallet-web: μ‚¬μš©μž ν”„λ‘œν•„ λ°μ΄ν„°μ˜ κ°€μš©μ„± 보μž₯

에 λ§Œλ“  2020λ…„ 04μ›” 03일  Β·  10μ½”λ©˜νŠΈ  Β·  좜처: blockstack/stacks-wallet-web

userSession.loadUserData()의 userDataλŠ” κΈ°μ‘΄ blockstack.js λ©”μ†Œλ“œμ™€ λ™μΌν•˜κ²Œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
이전 인증으둜 λΈŒλΌμš°μ € μ„€μ • '이름' 및 '아바타' ν”„λ‘œν•„ 데이터λ₯Ό κ°€μ Έμ˜€κΈ° μœ„ν•΄ let person = new blockstack.Person(userData) ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 즉. person.name() 및 person.avatarUrl() .

연결을 μ‚¬μš©ν•˜λ©΄ μœ„μ˜ ν”„λ‘œμ„ΈμŠ€λŠ” person.name() 및 person.avatarUrl()이 μ‘΄μž¬ν•˜λ”λΌλ„ λ‘˜ 닀에 λŒ€ν•΄ null λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

이것은 μΌμ’…μ˜ κ°œμΈν™”λ₯Ό ν—ˆμš©ν•˜λ €λŠ” 앱에 λŒ€ν•œ νšŒκ·€μž…λ‹ˆλ‹€.

πŸ› Bug!

λͺ¨λ“  10 λŒ“κΈ€

λ¬Έμ œλŠ” λ ˆκ±°μ‹œ λΈ”λ‘μŠ€νƒ λΈŒλΌμš°μ €κ°€ ν”„λ‘œν•„ URLμ—μ„œ κ°€μ Έμ˜¨ authReponse ν† ν°μ˜ ν”„λ‘œν•„μ„ λ°˜ν™˜ν•˜λŠ” 반면 μƒˆ λΈ”λ‘μŠ€νƒ μ•±/μΈμ¦μžλŠ” 이 쑰회λ₯Ό μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

μ—¬μ „νžˆ μ‚¬μš©μžμ˜ ν”„λ‘œν•„μ„ 보고 싢은 앱은 lookup profile(http://blockstack.github.io/blockstack.js/globals.html#lookupprofile)을 ν˜ΈμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€.

loadUserData μ—¬μ „νžˆ λ™μΌν•˜λ©° μΈμ¦μžκ°€ μ œκ³΅ν•˜λŠ” 둜컬 μΊμ‹œ(localstorage)μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” μ‚¬μš©μž 데이터λ₯Ό λ‘œλ“œν•©λ‹ˆλ‹€.

ν₯λ―Έλ‘­κ²Œλ„ publish_data λ₯Ό μš”μ²­ν•˜λŠ” μ•±μ˜ 경우 μ—°κ²° μΈμ¦μžκ°€ ν”„λ‘œν•„μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

@htove μ‹±κΈ€ ν”Œλ ˆμ΄μ–΄ 앱에 이 지원을 λ‹€μ‹œ μΆ”κ°€ν•˜λŠ” 있으 μ‹­λ‹ˆκΉŒ?

lookupProfile을 μ‚¬μš©ν•˜λŠ” @friedger λŠ” μ—¬μ „νžˆ κ°œμΈν™”μ— ν•„μš”ν•œ name() 및 avatarUrl()에 λŒ€ν•œ μ•‘μ„ΈμŠ€λ₯Ό μ œκ³΅ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@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 참고둜, 이것은 μ—¬μ „νžˆ β€‹β€‹ν΄λž˜μŠ€ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚΄ ν”„λ‘œν•„μ— 이름과 아바타가 μžˆλŠ”μ§€ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

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: (...)

그런데 Local Storageμ—μ„œ 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 κ°€ Promiseλ₯Ό λ°˜ν™˜ν•˜κ³  await μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. κ·Έλž˜μ„œ, 당신이 μ–»λŠ” 것은 μ•½μ†μž…λ‹ˆλ‹€.

Person 클래슀λ₯Ό μ‚¬μš©ν•  λ•Œ μ—¬μ „νžˆ μ§€μ†λ˜λŠ” λ¬Έμ œμ— λŒ€ν•΄ 후속 쑰치λ₯Ό μ·¨ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. 이에 λŒ€ν•΄ μ‘°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

@dantravino - new Person(userData) λŒ€μ‹  new Person(userData.profile) ν˜ΈμΆœν•΄μ•Ό ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ•„λ§ˆλ„ μ΄μ „μ—λŠ” λ‹€λ₯΄κ²Œ μž‘λ™ν–ˆμŠ΅λ‹ˆκΉŒ? κ·ΈλŸ¬λ‚˜ 이것은 μ—¬κΈ° λ¬Έμ„œμ™€ μΌμΉ˜ν•©λ‹ˆλ‹€.

https://blockstack.github.io/blockstack.js/index.html#quickstart -build-an-application

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰