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パラメーターは機能しますか?

ここで何を意味するのかわかりません。 どうすれば確認できますか?

次のドキュメントを参照してください: https

redirectToオプションを含めることができます。 コールバックが失敗した場合、現在のblockstack.jsの動作と同じように、ユーザーはauthResponseパラメーターを使用してredirectToリダイレクトされる必要があります。

@hstoveは、バグ自体を修正するのではなく、追加の移行ガイダンスを提供することの問題ですか?

これは、上記で追加したサポートのユーザーからのものですが、次のステップで応答がありません。 これは、coronatrackerアプリに影響を与えています。

こんにちはBlockstackのサポート、

CoronaTracker(https://coronatracker.me/)を開発している問題を解決できるかどうかを確認するためにあなたの方法が送られてきました。 数日前、モバイルでのログインに問題があったため、この問題をhttps://github.com/blockstack/ux/issues/300に提出しました。

ChromeiOSの場合-まったくログインできませんでした
SafariiOSの場合-数回試行した後にのみログインできました

これが私たちの側にあるとは思わないが、そうだとか、それが何であるかについて何か考えがあれば、私に知らせてください。 この問題が解決された場合-それを解決するために必要な手順を送信できますか?

はい、ここでの修正は、ページの読み込み時に、アプリ内に通常のuserSession.handlePendingSignIn()フローを実装する必要があることです。 Connectにこれを自動的に実行させることは可能ですが、それが最善のアイデアであるかどうかは100%わかりません。 そのアイデアについてのフィードバックをいただければ幸いですが、それまでの間、アプリに手動で実装して、できるだけ早く修正することをお勧めします。

ですから、私はまだBlockstackに比較的慣れていません。モバイルでは、Blockstack authを、まったく新しいウィンドウを開く「従来の」方法で処理する必要があると言っているのでしょうか。 または、 ConnecthandlePendingSignIn()両方のフローをモバイルで同時に使用して、ユーザーがモバイルとデスクトップで同じエクスペリエンスを体験できるようにする方法はありますか?

ここでの修正は、ページの読み込み時に、アプリ内に通常のuserSession.handlePendingSignIn()フローを実装する必要があることです。

読み込み時にhandlePendingSignInを明示的に呼び出したアプリでも、Connectに問題が残っているというフィードバックがありました。 この問題は、 handlePendingSignInが複数回呼び出されることで説明できる可能性がありますか?

ですから、私はまだBlockstackに比較的慣れていません。モバイルでは、Blockstack authを、まったく新しいウィンドウを開く「従来の」方法で処理する必要があると言っているのでしょうか。 または、ConnectとhandlePendingSignIn()フローの両方をモバイルで同時に使用して、ユーザーがモバイルとデスクトップで同じエクスペリエンスを体験できるようにする方法はありますか?

@SomeMoosery 、はい、ほとんどのモバイルブラウザでは「従来の方法」で処理する必要があります。 これは、モバイルブラウザが、元のアプリとポップアップの間で行うクロスオリジンメッセージングをサポートしていないためです。 以前のように、リダイレクトベースの認証をサポートするフォールバックがまだあります。

ロード時にhandlePendingSignInを明示的に呼び出したアプリでも、Connectに問題が残っているというフィードバックがありました。 この問題は、handlePendingSignInが複数回呼び出されることで説明できる可能性がありますか?

@njordhov例はありますか?

この問題は、handlePendingSignInが複数回呼び出されることで説明できる可能性がありますか?

@njordhov例はありますか?

モバイルログインの失敗は、 handlePendingSignIn複数回呼び出すアプリでは説明されません。

CoronaTrackerアプリは、Connectが初期化される前にhandlePendingSignInコールバックを設定するreact-blockstackパッケージを使用します。 なし私は、これは競合を引き起こす可能性が疑われたが、CoronaTrackerが反応-blockstack初期設定を無効にすることによって、この仮説をテストした開発者、そして、それは何の違いを作っていない、接続のログインは、まだ携帯に失敗したreact-blockstackそれはでないのと同様に、初期化react-blockstackパッケージを使用しないアプリ。

ところで: handlePendingSignIn実際に一度に複数のコールバックをサポートしていますか? そうでない場合は、おそらくそうすべきであるため、認証状態の変更に対する複数のサブスクリプションが存在する可能性があります。

Connectチームは、モバイルでのログイン失敗の問題を再現できましたか? Banterを使用していると、モバイルでもログインに失敗するようです。

AuthOptions redirectToパラメータがある場合でも、モバイルログインが機能しません。
私はので、それはだと思うdidSendMessageBackfinalizeAuthResponse以下は、に設定することができ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内のステータスは不明です:)

@timstackblock
それは時々機能しますが、常にではないと思います。

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 評価