Stacks-wallet-web: [menghubungkan] Login gagal di ponsel

Dibuat pada 24 Mar 2020  ·  22Komentar  ·  Sumber: blockstack/stacks-wallet-web

Menggunakan pustaka koneksi di seluler (chrome dan firefox di Android) gagal menangani proses masuk yang tertunda.

Tab dengan respons autentikasi dibuka, namun fungsi onFinish tidak dipanggil. Ini berfungsi di desktop misalnya untuk http://coronatrackerv1.s3-website-us-east-1.amazonaws.com/

Kemungkinan penyelesaian, periksa secara manual untuk userSession.isPendingSignin() dan hubungi userSession.handlePendingSignIn()

impact-l size-s 🐛 Bug!

Komentar yang paling membantu

Tangkapan bagus @muneebm . Saya punya ide bagaimana saya bisa memperbaikinya.

Semua 22 komentar

Terima kasih atas laporannya @friedger !

Saya perlu melakukan investigasi. Saya tidak akan terkejut jika cross-origin postMessage memiliki masalah pada seluler. Apakah parameter redirectURL masih berfungsi jika callback tidak diaktifkan? Jika tidak, maka itu pasti bug.

Apakah parameter redirectURL masih berfungsi jika callback tidak diaktifkan?

Tidak yakin apa yang Anda maksud di sini. Bagaimana saya bisa memeriksanya?

Lihat dokumen ini: https://github.com/blockstack/ux/tree/master/packages/connect#authoptions

Anda dapat menyertakan opsi redirectTo . Jika callback gagal, pengguna harus dialihkan ke redirectTo dengan parameter authResponse , seperti cara kerja blockstack.js saat ini.

@hstove, apakah ini masalah memberikan panduan migrasi tambahan daripada memperbaiki bug itu sendiri?

Ini datang dari pengguna dalam dukungan yang menambahkannya di atas, tetapi belum diberi tanggapan untuk langkah selanjutnya. ini memengaruhi aplikasi koronatracker.

Halo dukungan Blockstack,

Saya dikirimi cara Anda untuk melihat apakah kami dapat menyelesaikan masalah yang kami alami dalam mengembangkan CoronaTracker (https://coronatracker.me/). Beberapa hari yang lalu, kami mengajukan https://github.com/blockstack/ux/issues/300 masalah ini, karena kami mengalami masalah saat masuk di perangkat seluler.

Di Chrome iOS - kami tidak dapat masuk sama sekali
Di Safari iOS - kami hanya dapat masuk setelah beberapa kali mencoba

Kami tidak percaya ini adalah sesuatu di pihak kami, tetapi jika ya atau Anda memiliki ide tentang apa yang bisa terjadi, beri tahu saya. Jika masalah ini telah diselesaikan - dapatkah Anda mengirimkan langkah-langkah yang diperlukan untuk mengatasinya?

Ya, perbaikannya di sini adalah Anda harus menerapkan aliran userSession.handlePendingSignIn() di dalam aplikasi Anda, saat halaman dimuat. Mungkin saja kami dapat membuat Connect melakukan ini secara otomatis, tetapi saya tidak 100% yakin itu adalah ide terbaik. Saya sangat menghargai umpan balik tentang ide itu, tetapi sementara itu, saya menyarankan untuk menerapkannya secara manual di aplikasi Anda untuk memperbaikinya secepat mungkin.

Jadi saya masih relatif baru mengenal Blockstack - apakah kita mengatakan bahwa di seluler kita harus menangani auth Blockstack dengan cara "tradisional" di mana ia membuka jendela yang sama sekali baru, dll? Atau, adakah cara untuk menggunakan aliran Connect dan handlePendingSignIn() secara bersamaan untuk seluler sehingga pengguna memiliki pengalaman yang sama di seluler atau desktop?

perbaikannya di sini adalah Anda harus mengimplementasikan alur userSession.handlePendingSignIn () biasa di dalam aplikasi Anda, saat halaman dimuat.

Masih mendapat umpan balik bahwa masalah tetap ada pada Connect bahkan dalam aplikasi yang secara eksplisit menyebut handlePendingSignIn pada waktu pemuatan. Bisakah masalah ini dijelaskan dengan handlePendingSignIn dipanggil lebih dari sekali?

Jadi saya masih relatif baru mengenal Blockstack - apakah kita mengatakan bahwa di seluler kita harus menangani auth Blockstack dengan cara "tradisional" di mana ia membuka jendela yang sama sekali baru, dll? Atau, adakah cara untuk menggunakan aliran Connect dan handlePendingSignIn () secara bersamaan untuk seluler sehingga pengguna memiliki pengalaman yang sama di seluler atau desktop?

@SomeMoosery , ya, Anda masih harus menanganinya dengan 'cara tradisional' di sebagian besar browser seluler. Ini karena browser seluler tidak mendukung perpesanan lintas sumber yang kami lakukan antara aplikasi asli dan munculan. Kami masih memiliki fallback yang mendukung autentikasi berbasis pengalihan, seperti cara kerjanya dulu.

Masih mendapat masukan bahwa masalah tetap ada pada Connect bahkan dalam aplikasi yang secara eksplisit memanggil handlePendingSignIn pada waktu pemuatan. Bisakah masalah ini dijelaskan oleh handlePendingSignIn yang dipanggil lebih dari sekali?

@njordhov apakah Anda punya contoh?

Bisakah masalah ini dijelaskan oleh handlePendingSignIn yang dipanggil lebih dari sekali?

@njordhov apakah Anda punya contoh?

Kegagalan login seluler TIDAK dijelaskan oleh aplikasi yang memanggil handlePendingSignIn lebih dari sekali.

Aplikasi CoronaTracker menggunakan paket react- blockstack saya, yang menyiapkan callback handlePendingSignIn sebelum Connect diinisialisasi. Saya menduga ini dapat menyebabkan konflik, tetapi pengembang CoronaTracker menguji hipotesis ini dengan menonaktifkan inisialisasi react-blockstack, dan tidak ada bedanya, login Connect masih gagal di ponsel tanpa inisialisasi react-blockstack , seperti halnya di aplikasi yang tidak menggunakan paket react-blockstack.

BTW: Apakah handlePendingSignIn sebenarnya mendukung lebih dari satu panggilan balik pada satu waktu? Jika tidak, mungkin harus, jadi ada beberapa langganan untuk perubahan status otentikasi.

Apakah tim Connect dapat mereplikasi masalah gagal masuk di perangkat seluler? Saya dengar login masih gagal di ponsel saat menggunakan Banter.

Login seluler tidak berfungsi meskipun Anda memiliki redirectTo param di AuthOptions .
Saya pikir itu karena didSendMessageBack di finalizeAuthResponse bawah ini dapat disetel ke true bahkan jika source.postMessage tidak berhasil.
https://github.com/blockstack/ux/blob/f1921a7b109afb6c149e5f67df33ef52867cab96/packages/app/src/common/utils.ts#L53 -L78

Tangkapan bagus @muneebm . Saya punya ide bagaimana saya bisa memperbaikinya.

@friedger @muneebm @njordhov @SomeMoosery

Halo teman-teman, saya menjalankan login koneksi seluler di Android Chrome dan tampaknya masalah telah teratasi.

Silakan lihat video pada tautan di bawah dan beri tahu saya jika ada hal lain yang diperlukan atau dapatkah kami menyelesaikan masalah ini?

http://somup.com/cYhIoXjrET

Menarik, terutama karena tautan yang Anda ikuti berasal dari versi lama aplikasi CoronaTracker sehingga tidak akan terjadi karena apa pun di pihak kami. Tidak yakin status dalam Blockstack :)

@tokopedia
Kadang-kadang berhasil, tetapi tidak selalu, menurut saya.

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

Aplikasi demo untuk PR yang dilampirkan pada masalah ini:
https://xordrive.muneeb.now.sh/?p=stxconnect.id.blockstack_3a24fc92-baaf-4ae9-af6d-5d207d5a5d6b

@hstove @timstackblock sepertinya tidak berfungsi lagi

image

Biar saya lihat

Hai @markmhx dan @hstove , Login tidak berfungsi di perangkat seluler. Saya melampirkan authOptions dari BlockSurvey di bawah ini, lihat. Beri tahu saya, jika ada yang perlu saya ubah. Terima kasih.

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 Kami memiliki dokumen terbaru untuk mendukung pengalihan pengalihan di sini: https://docs.blockstack.org/develop/connect/overview.html

@hove , Terima kasih atas balasan Anda.

Kami juga memiliki fallback, dengan melampirkan kode di bawah ini. Kami mengamati bahwa, jika kami menggunakan callback jadi, pengalihan tidak akan dipertimbangkan. Jadi pengalihan bahkan tidak terjadi, karena kode di bawah ini tidak dijalankan. Terima kasih.

// Modul Login 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");
    });
}

Saya mengalihkan setelah handlePendingSignIn () saya dan mengalami masalah yang sama. Masalah saya yang lebih besar adalah bahwa di seluler, aplikasi tetap berada di jendela popup baru, daripada menutup dan kembali ke jendela panggilan asli.

situs:
https://webby-daily.runkodapps.com/

video / demo:
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]; }); } ...

Apakah halaman ini membantu?
0 / 5 - 0 peringkat