Stacks-wallet-web: [μ—°κ²°] λͺ¨λ°”μΌμ—μ„œ 둜그인 μ‹€νŒ¨

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

λͺ¨λ°”일 (Android의 Chrome 및 Firefox)μ—μ„œ μ—°κ²° 라이브러리λ₯Ό μ‚¬μš©ν•˜λ©΄ λŒ€κΈ°μ€‘μΈ λ‘œκ·ΈμΈμ„ 처리 ν•  수 β€‹β€‹μ—†μŠ΅λ‹ˆλ‹€.

인증 μ‘λ‹΅μ΄μžˆλŠ” 탭이 열리지 만 onFinish ν•¨μˆ˜λŠ” ν˜ΈμΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이것은 http://coronatrackerv1.s3-website-us-east-1.amazonaws.com/κ³Ό 같은 λ°μŠ€ν¬νƒ‘μ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€

κ°€λŠ₯ν•œ ν•΄κ²° λ°©λ²•μž…λ‹ˆλ‹€. userSession.isPendingSignin() μˆ˜λ™μœΌλ‘œ ν™•μΈν•˜κ³  userSession.handlePendingSignIn() μ „ν™”ν•˜μ„Έμš”.

impact-l size-s πŸ› Bug!

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

쒋은 캐치 @muneebm . μ–΄λ–»κ²Œ κ³ μΉ  수 μžˆμ„μ§€ 아이디어가 μžˆμŠ΅λ‹ˆλ‹€.

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

@friedger λ³΄κ³ μ„œμ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€!

λͺ‡ 가지 쑰사λ₯Όν•΄μ•Όν•©λ‹ˆλ‹€. ꡐ차 좜처 postMessage 에 λͺ¨λ°”일 λ¬Έμ œκ°€ μžˆμ–΄λ„ 놀라지 μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€. 콜백이 μ‹€ν–‰λ˜μ§€ μ•Šμ•„λ„ redirectURL 맀개 λ³€μˆ˜κ°€ 계속 μž‘λ™ν•©λ‹ˆκΉŒ? 그렇지 μ•Šλ‹€λ©΄ 그것은 ν™•μ‹€νžˆ λ²„κ·Έμž…λ‹ˆλ‹€.

콜백이 μ‹€ν–‰λ˜μ§€ μ•Šμ•„λ„ redirectURL 맀개 λ³€μˆ˜κ°€ 계속 μž‘λ™ν•©λ‹ˆκΉŒ?

μ—¬κΈ°μ„œ 무슨 λœ»μΈμ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. μ–΄λ–»κ²Œ 확인할 수 μžˆμŠ΅λ‹ˆκΉŒ?

λ‹€μŒ λ¬Έμ„œλ₯Ό μ°Έμ‘° ν•˜μ„Έμš” :

redirectTo μ˜΅μ…˜μ„ 포함 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 콜백이 μ‹€νŒ¨ν•˜λ©΄ ν˜„μž¬ blockstack.js의 μž‘λ™ 방식과 λ§ˆμ°¬κ°€μ§€λ‘œ authResponse 맀개 λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžλ₯Ό redirectTo 둜 λ¦¬λ””λ ‰μ…˜ν•΄μ•Όν•©λ‹ˆλ‹€.

@hstove λŠ” 버그 자체λ₯Ό μˆ˜μ •ν•˜λŠ” λŒ€μ‹  μΆ”κ°€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 지침을 μ œκ³΅ν•˜λŠ” λ¬Έμ œμž…λ‹ˆκΉŒ?

μ΄λŠ” μœ„μ— μΆ”κ°€ ν•œ 지원 μ‚¬μš©μžκ°€ 보낸 κ²ƒμ΄μ§€λ§Œ λ‹€μŒ λ‹¨κ³„μ—μ„œ 응닡을받지 λͺ»ν–ˆμŠ΅λ‹ˆλ‹€. 이것은 coronatracker 앱에 영ν–₯을 미치고 μžˆμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” Blockstack 지원,

CoronaTracker (https://coronatracker.me/)λ₯Ό κ°œλ°œν•˜κ³ μžˆλŠ” 문제λ₯Ό ν•΄κ²°ν•  수 μžˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ κ·€ν•˜μ˜ 방법을 λ³΄λƒˆμŠ΅λ‹ˆλ‹€. λ©°μΉ  μ „ λͺ¨λ°”μΌμ—μ„œ λ‘œκ·ΈμΈν•˜λŠ” 데 λ¬Έμ œκ°€ μžˆμ—ˆκΈ° λ•Œλ¬Έμ—μ΄ 문제λ₯Ό https://github.com/blockstack/ux/issues/300에 μ œμΆœν–ˆμŠ΅λ‹ˆλ‹€.

Chrome iOSμ—μ„œ-μ „ν˜€ 둜그인 ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
Safari iOSμ—μ„œ-λͺ‡ 번의 μ‹œλ„ 후에 만 β€‹β€‹λ‘œκ·ΈμΈ ν•  μˆ˜μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

이것이 우리μͺ½μ— μžˆλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 그것이 무엇인지에 λŒ€ν•œ 아이디어가 μžˆλ‹€λ©΄ μ•Œλ €μ£Όμ„Έμš”. 이 λ¬Έμ œκ°€ ν•΄κ²° 된 경우 문제 해결에 ν•„μš”ν•œ 단계λ₯Ό 보내 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

예, μ—¬κΈ°μ„œ μˆ˜μ • ν•œ 사항은 νŽ˜μ΄μ§€λ‘œλ“œμ‹œ μ•± λ‚΄μ—μ„œ 일반적인 userSession.handlePendingSignIn() 흐름을 κ΅¬ν˜„ν•΄μ•Όν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. Connect가이 μž‘μ—…μ„ μžλ™μœΌλ‘œ μˆ˜ν–‰ν•˜λ„λ‘ ν•  수 μžˆμ§€λ§Œ 이것이 μ΅œμ„ μ˜ 아이디어라고 100 % ν™•μ‹ ν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έ 아이디어에 λŒ€ν•œ ν”Όλ“œλ°±μ„ κ³ λ§™κ²Œ μƒκ°ν•˜μ§€λ§Œ κ·Έλ™μ•ˆ μ•±μ—μ„œ μˆ˜λ™μœΌλ‘œ κ΅¬ν˜„ν•˜μ—¬ μ΅œλŒ€ν•œ 빨리 μˆ˜μ •ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ μ €λŠ” μ—¬μ „νžˆ Blockstack을 처음 μ ‘ν–ˆμŠ΅λ‹ˆλ‹€. λͺ¨λ°”μΌμ—μ„œ μ™„μ „νžˆ μƒˆλ‘œμš΄ 창을 μ—¬λŠ” "전톡적인"λ°©μ‹μœΌλ‘œ Blockstack 인증을 μ²˜λ¦¬ν•΄μ•Όν•œλ‹€κ³  λ§ν•˜λŠ” κ±΄κ°€μš”? λ˜λŠ” Connect 및 handlePendingSignIn() 흐름을 λͺ¨λ°”일 용으둜 ν•¨κ»˜ μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžκ°€ λͺ¨λ°”일 λ˜λŠ” λ°μŠ€ν¬ν†±μ—μ„œ λ™μΌν•œ κ²½ν—˜μ„ κ°–λ„λ‘ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

μ—¬κΈ°μ„œ μˆ˜μ • ν•œ 것은 νŽ˜μ΄μ§€λ‘œλ“œμ‹œ μ•± λ‚΄λΆ€μ—μ„œ 일반적인 userSession.handlePendingSignIn () 흐름을 κ΅¬ν˜„ν•΄μ•Όν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

λ‘œλ“œμ‹œ λͺ…μ‹œ 적으둜 handlePendingSignIn λ₯Ό 호좜 ν•œ μ•±μ—μ„œλ„ λ¬Έμ œκ°€ Connect에 남아 μžˆλ‹€λŠ” ν”Όλ“œλ°±μ„ λ°›μ•˜μŠ΅λ‹ˆλ‹€. handlePendingSignIn κ°€ 두 번 이상 ν˜ΈμΆœλ˜μ–΄μ΄ 문제λ₯Ό μ„€λͺ… ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

κ·Έλž˜μ„œ μ €λŠ” μ—¬μ „νžˆ Blockstack을 처음 μ ‘ν–ˆμŠ΅λ‹ˆλ‹€. λͺ¨λ°”μΌμ—μ„œ μ™„μ „νžˆ μƒˆλ‘œμš΄ 창을 μ—¬λŠ” "전톡적인"λ°©μ‹μœΌλ‘œ Blockstack 인증을 μ²˜λ¦¬ν•΄μ•Όν•œλ‹€κ³  λ§ν•˜λŠ” κ±΄κ°€μš”? λ˜λŠ” Connect 및 handlePendingSignIn () 흐름을 λͺ¨λ°”일 용으둜 ν•¨κ»˜ μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžκ°€ λͺ¨λ°”일 λ˜λŠ” λ°μŠ€ν¬ν†±μ—μ„œ λ™μΌν•œ κ²½ν—˜μ„ κ°–λ„λ‘ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

@SomeMoosery , 예, λŒ€λΆ€λΆ„μ˜ λͺ¨λ°”일 λΈŒλΌμš°μ €μ—μ„œ '전톡적인 방식'으둜 μ²˜λ¦¬ν•΄μ•Όν•©λ‹ˆλ‹€. μ΄λŠ” λͺ¨λ°”일 λΈŒλΌμš°μ €κ°€ μ›λž˜ μ•±κ³Ό νŒμ—…κ°„μ— μˆ˜ν–‰ν•˜λŠ” ꡐ차 좜처 λ©”μ‹œμ§•μ„ μ§€μ›ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. μ˜ˆμ „μ²˜λŸΌ λ¦¬λ””λ ‰μ…˜ 기반 인증을 μ§€μ›ν•˜λŠ” λŒ€μ²΄ 방법이 μžˆμŠ΅λ‹ˆλ‹€.

λ‘œλ“œμ‹œ handlePendingSignIn을 λͺ…μ‹œ 적으둜 호좜 ν•œ μ•±μ—μ„œλ„ λ¬Έμ œκ°€ Connect에 남아 μžˆλ‹€λŠ” ν”Όλ“œλ°±μ„ λ°›μ•˜μŠ΅λ‹ˆλ‹€. 이 λ¬Έμ œλŠ” handlePendingSignIn이 두 번 이상 ν˜ΈμΆœλ˜μ–΄ μ„€λͺ… 될 수 μžˆμŠ΅λ‹ˆκΉŒ?

@njordhov 의 μ˜ˆκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

이 λ¬Έμ œλŠ” handlePendingSignIn이 두 번 이상 ν˜ΈμΆœλ˜μ–΄ μ„€λͺ… 될 수 μžˆμŠ΅λ‹ˆκΉŒ?

@njordhov 의 μ˜ˆκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

λͺ¨λ°”일 둜그인 μ‹€νŒ¨λŠ” handlePendingSignIn 두 번 이상 ν˜ΈμΆœν•˜λŠ” μ•±μœΌλ‘œ μ„€λͺ…λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

CoronaTracker 앱은 Connectκ°€ μ΄ˆκΈ°ν™”λ˜κΈ° 전에 handlePendingSignIn μ½œλ°±μ„ μ„€μ •ν•˜λŠ” react-blockstack νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. λ‚˜λŠ” 이것이 μΆ©λŒμ„ μΌμœΌν‚¬ 수 μžˆλ‹€κ³  μƒκ°ν–ˆμ§€λ§Œ CoronaTracker κ°œλ°œμžλŠ” react-blockstack μ΄ˆκΈ°ν™”λ₯Ό λΉ„ν™œμ„±ν™”ν•˜μ—¬μ΄ 가섀을 ν…ŒμŠ€νŠΈν–ˆμœΌλ©° μ•„λ¬΄λŸ° 차이가 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. Connect λ‘œκ·ΈμΈμ€ μ—¬μ „νžˆ react-blockstack μ΄ˆκΈ°ν™”μ—†μ΄ λͺ¨λ°”μΌμ—μ„œ μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€. react-blockstack νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ•±.

BTW : handlePendingSignIn μ‹€μ œλ‘œ ν•œ λ²ˆμ— λ‘˜ μ΄μƒμ˜ μ½œλ°±μ„ μ§€μ›ν•©λ‹ˆκΉŒ? 그렇지 μ•ŠμœΌλ©΄ 인증 μƒνƒœ 변경에 λŒ€ν•œ μ—¬λŸ¬ κ΅¬λ…μ΄μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

Connect νŒ€μ΄ λͺ¨λ°”μΌμ—μ„œ 둜그인 μ‹€νŒ¨ 문제λ₯Ό μž¬ν˜„ ν•  수 μžˆμ—ˆμŠ΅λ‹ˆκΉŒ? Banterλ₯Ό μ‚¬μš©ν•  λ•Œ λͺ¨λ°”μΌμ—μ„œ μ—¬μ „νžˆ 둜그인이 μ‹€νŒ¨ν•œλ‹€κ³  λ“€μ—ˆμŠ΅λ‹ˆλ‹€.

AuthOptions redirectTo 맀개 λ³€μˆ˜κ°€ μžˆμ–΄λ„ λͺ¨λ°”일 둜그인이 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
λ‚˜λŠ” 그것이 있기 λ•Œλ¬Έμ— 생각 didSendMessageBack μ—μ„œ finalizeAuthResponse μ΄ν•˜λ‘œ μ„€μ • 될 수 true 짝수 경우 source.postMessage μ„±κ³΅ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.
https://github.com/blockstack/ux/blob/f1921a7b109afb6c149e5f67df33ef52867cab96/packages/app/src/common/utils.ts#L53 -L78

쒋은 캐치 @muneebm . μ–΄λ–»κ²Œ κ³ μΉ  수 μžˆμ„μ§€ 아이디어가 μžˆμŠ΅λ‹ˆλ‹€.

@friedger @muneebm @njordhov @SomeMoosery

μ•ˆλ…•ν•˜μ„Έμš”, Android Chromeμ—μ„œ λͺ¨λ°”일 μ—°κ²° λ‘œκ·ΈμΈμ„ 톡해 λ¬Έμ œκ°€ ν•΄κ²° 된 것 κ°™μŠ΅λ‹ˆλ‹€.

μ•„λž˜ 링크의 λΉ„λ””μ˜€λ₯Όλ³΄κ³  λ‹€λ₯Έ 것이 ν•„μš”ν•œμ§€ μ•Œλ €μ£Όμ‹­μ‹œμ˜€. μ•„λ‹ˆλ©΄μ΄ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

http://somup.com/cYhIoXjrET

ν₯λ―Έλ‘­κ²Œλ„, 특히 당신이 따라 κ°„ λ§ν¬λŠ” CoronaTracker μ•±μ˜ 였래된 λΉŒλ“œμ—μ„œ 온 것이기 λ•Œλ¬Έμ— 우리 μͺ½μ—μ„œ μ–΄λ–€ 것도 원인이 μ•„λ‹ˆμ—ˆμ„ κ²ƒμž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ Blockstack λ‚΄μ˜ μƒνƒœλ₯Ό ν™•μ‹  ν•  수 μ—†μŠ΅λ‹ˆλ‹€. :)

μ•ˆλ…•ν•˜μ„Έμš”.
λ•Œλ‘œλŠ” μž‘λ™ν•˜μ§€λ§Œ 항상 그런 것은 μ•„λ‹™λ‹ˆλ‹€.

xordrive :
https://xordrive.muneeb.now.sh/?p=stxconnect.id.blockstack_daa6bcc3-91c2-490e-b322-3db9c3fee4de

이 λ¬Έμ œμ— 첨뢀 된 PR 데λͺ¨ μ•± :
https://xordrive.muneeb.now.sh/?p=stxconnect.id.blockstack_3a24fc92-baaf-4ae9-af6d-5d207d5a5d6b

@hstove @timstackblock이 λ‹€μ‹œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

image

ν•œ 번 λ³Όκ²Œμš”

@markmhx 및 @hstove μ•ˆλ…•ν•˜μ„Έμš”. 둜그인이 λͺ¨λ°”μΌμ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ•„λž˜ BlockSurvey의 authOptionsλ₯Ό μ²¨λΆ€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ³€κ²½ν•΄μ•Ό ν•  사항이 있으면 μ•Œλ €μ£Όμ‹­μ‹œμ˜€. 감사.

let authOptions = {
  redirectTo: '/dashboard',
  manifestPath: '/manifest.json',      
  sendToSignIn: false,
  userSession: this.userSession,
  appDetails: {
    name: 'BlockSurvey',
    icon: 'https://blocksurvey.io/assets/images/logo/blocksurvey-logo-login.svg'
  },
  finished: ({ userSession }) => {        
    window.location = "https://blocksurvey.io/dashboard";
  }
};

@BlockSurvey @muneebm 여기에 λ¦¬λ””λ ‰μ…˜ λŒ€μ²΄λ₯Ό μ§€μ›ν•˜λŠ” μ΅œμ‹  λ¬Έμ„œκ°€ μžˆμŠ΅λ‹ˆλ‹€. https://docs.blockstack.org/develop/connect/overview.html

@hstove , νšŒμ‹  ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

μ•„λž˜ μ½”λ“œλ₯Ό μ²¨λΆ€ν•˜μ—¬ 폴 백도 μžˆμŠ΅λ‹ˆλ‹€. μ™„λ£Œλœ μ½œλ°±μ„ μ‚¬μš©ν•˜λ©΄ λ¦¬λ””λ ‰μ…˜μ΄ κ³ λ €λ˜μ§€ μ•ŠλŠ” κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚¬μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ•„λž˜ μ½”λ“œκ°€ μ‹€ν–‰λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ¦¬λ””λ ‰μ…˜μ΄ λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 감사.

// BS 둜그인 λͺ¨λ“ˆ
if (this.userSession.isSignInPending ()) {

  // If it is in progress
  this.userSession.handlePendingSignIn()
    .then((userData) => {
      // Always redirect to dashboard
      window.location = <any>(Constants.DOMAIN_URL + "/dashboard");
    });
}

λ‚΄ handlePendingSignIn () 후에 λ¦¬λ””λ ‰μ…˜ 쀑이며 λ™μΌν•œ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. λ‚΄ 더 큰 λ¬Έμ œλŠ” λͺ¨λ°”μΌμ—μ„œ 앱이 λ‹«νžˆκ³  μ›λž˜ 톡화 창으둜 λŒμ•„ 가지 μ•Šκ³  μƒˆ νŒμ—… 창에 μœ μ§€λœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

λŒ€μ§€:
https://webby-daily.runkodapps.com/

λΉ„λ””μ˜€ / 데λͺ¨ :
https://photos.app.goo.gl/YmBtn3RaV6NfivqD9

mounted() { if (userSession.isUserSignedIn()) { this.setProfile(); } else if (userSession.isSignInPending()) { userSession.handlePendingSignIn().then(() => { this.setProfile(); // window.location = window.location.href.split("?")[0]; }); } ...

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