L'utilisation de la bibliothèque de connexion sur mobile (Chrome et Firefox sur Android) ne parvient pas à gérer la connexion en attente.
Un onglet avec la réponse d'authentification est ouvert, cependant, la fonction onFinish n'est pas appelée. Cela fonctionne sur le bureau, par exemple pour http://coronatrackerv1.s3-website-us-east-1.amazonaws.com/
Solution possible, vérifiez manuellement userSession.isPendingSignin()
et appelez userSession.handlePendingSignIn()
Merci pour le rapport @friedger !
J'ai besoin de faire quelques recherches. Je ne serais pas surpris si l'origine croisée postMessage
a des problèmes sur mobile. Le paramètre redirectURL
fonctionne-t-il toujours si le rappel n'est pas déclenché? Sinon, c'est définitivement un bug.
Le paramètre redirectURL fonctionne-t-il toujours si le rappel n'est pas déclenché?
Je ne suis pas sûr de te comprendre. Comment pourrais-je vérifier cela?
Consultez ces documents: https://github.com/blockstack/ux/tree/master/packages/connect#authoptions
Vous pouvez inclure une option redirectTo
. Si le rappel échoue, l'utilisateur doit être redirigé vers redirectTo
avec un paramètre authResponse
, tout comme le fonctionnement actuel de blockstack.js.
@hstove s'agit-il de fournir des conseils de migration supplémentaires plutôt que de corriger un bogue en soi?
Cela provient d'un utilisateur du support qui l'a ajouté ci-dessus, mais n'a pas reçu de réponse sur les étapes suivantes. cela a un impact sur l'application coronatracker.
Salut le soutien de Blockstack,
On m'a envoyé pour voir si nous pouvions résoudre un problème que nous rencontrons en développant CoronaTracker (https://coronatracker.me/). Il y a quelques jours, nous avons déposé https://github.com/blockstack/ux/issues/300 ce problème, car nous rencontrions des difficultés pour nous connecter sur mobile.
Sur Chrome iOS - nous n'avons pas du tout pu nous connecter
Sur Safari iOS - nous n'avons pu nous connecter qu'après plusieurs tentatives
Nous ne pensons pas que ce soit quelque chose de notre part, mais si c'est le cas ou si vous avez des idées de ce que cela pourrait être, faites-le moi savoir. Si ce problème a été résolu, pourriez-vous envoyer les étapes nécessaires pour le résoudre?
Oui, le correctif ici est que vous devrez implémenter le flux userSession.handlePendingSignIn()
habituel
Je suis donc encore relativement nouveau dans Blockstack - est-ce que nous disons que sur mobile, nous devrons gérer l'authentification Blockstack de la manière "traditionnelle" où cela ouvre une toute nouvelle fenêtre, etc. Ou, existe-t-il un moyen d'utiliser les flux Connect
et handlePendingSignIn()
en tandem pour mobile afin que les utilisateurs aient la même expérience sur mobile ou sur ordinateur?
le correctif ici est que vous devrez implémenter le flux usuel userSession.handlePendingSignIn () à l'intérieur de votre application, lors du chargement de la page.
J'ai toujours reçu des commentaires indiquant que le problème persistait avec Connect même dans une application qui appelait explicitement handlePendingSignIn
au moment du chargement. Ce problème peut-il s'expliquer par le fait que handlePendingSignIn
est appelé plus d'une fois?
Je suis donc encore relativement nouveau dans Blockstack - est-ce que nous disons que sur mobile, nous devrons gérer l'authentification Blockstack de la manière "traditionnelle" où cela ouvre une toute nouvelle fenêtre, etc. Ou, existe-t-il un moyen d'utiliser à la fois le flux Connect et handlePendingSignIn () en tandem pour mobile afin que les utilisateurs aient la même expérience sur mobile ou ordinateur de bureau?
@SomeMoosery , oui, vous devrez toujours le gérer de manière «traditionnelle» sur la plupart des navigateurs mobiles. En effet, les navigateurs mobiles ne prennent pas en charge la messagerie d'origine croisée que nous faisons entre l'application d'origine et la fenêtre contextuelle. Nous avons toujours une solution de secours qui prend en charge l'authentification basée sur les redirections, comme cela fonctionnait auparavant.
J'ai encore reçu des commentaires indiquant que le problème persistait avec Connect, même dans une application qui appelait explicitement handlePendingSignIn au moment du chargement. Ce problème peut-il être expliqué par le fait que handlePendingSignIn est appelé plusieurs fois?
@njordhov avez-vous un exemple?
Ce problème peut-il être expliqué par le fait que handlePendingSignIn est appelé plusieurs fois?
@njordhov avez-vous un exemple?
L'échec de connexion mobile n'est PAS expliqué par une application appelant handlePendingSignIn
plus d'une fois.
L'application CoronaTracker utilise mon package react-blockstack , qui configure un rappel handlePendingSignIn
avant l'initialisation de Connect. Je soupçonnais que cela pouvait provoquer un conflit, mais les développeurs de CoronaTracker ont testé cette hypothèse en désactivant l'initialisation de react-blockstack, et cela ne faisait aucune différence, la connexion à la connexion échouait toujours sur mobile sans initialisation de react-blockstack
, tout comme elle le fait dans applications qui n'utilisent pas le package react-blockstack.
BTW: handlePendingSignIn
en charge plus d'un rappel à la fois? Sinon, c'est peut-être le cas, il peut donc y avoir plusieurs souscriptions au changement d'état d'authentification.
L'équipe Connect a-t-elle pu répliquer le problème de l'échec de connexion sur mobile? J'entends que la connexion échoue toujours sur le mobile lors de l'utilisation de Banter.
La connexion mobile ne fonctionne pas même si vous avez redirectTo
param dans AuthOptions
.
Je pense que c'est parce que didSendMessageBack
dans finalizeAuthResponse
ci-dessous pourrait être défini sur true
même si source.postMessage
échoue.
https://github.com/blockstack/ux/blob/f1921a7b109afb6c149e5f67df33ef52867cab96/packages/app/src/common/utils.ts#L53 -L78
Bonne capture @muneebm . J'ai une idée de la façon dont je pourrais résoudre ce problème.
@friedger @muneebm @njordhov @SomeMoosery
Hé les gars, j'ai parcouru la connexion mobile connect sur Android Chrome et il semble que le problème a été résolu.
S'il vous plaît voir la vidéo dans le lien ci-dessous et laissez-moi savoir si quelque chose d'autre est nécessaire ou pouvons-nous résoudre ce problème?
Intéressant, d'autant plus que le lien que vous avez suivi provient d'une ancienne version de l'application CoronaTracker et n'aurait donc pas été dû à quoi que ce soit de notre côté. Je ne suis pas sûr du statut dans Blockstack :)
@timstackblock
Cela fonctionne parfois, mais pas toujours, je pense.
xordrive:
https://xordrive.muneeb.now.sh/?p=stxconnect.id.blockstack_daa6bcc3-91c2-490e-b322-3db9c3fee4de
L'application de démonstration pour le PR attaché à ce numéro:
https://xordrive.muneeb.now.sh/?p=stxconnect.id.blockstack_3a24fc92-baaf-4ae9-af6d-5d207d5a5d6b
@hstove @timstackblock semble ne plus fonctionner
Laisse-moi regarder
Bonjour @markmhx et @hstove , La connexion ne fonctionne pas sur mobile. Je joins les authOptions de BlockSurvey ci-dessous, jetez un œil. Faites-moi savoir si je dois changer quelque chose. Merci.
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 Nous avons des documents plus récents pour prendre en charge la redirection de secours ici: https://docs.blockstack.org/develop/connect/overview.html
@hstove , merci pour votre réponse.
Nous avons également une solution de secours, en joignant le code ci-dessous. Nous avons observé que, si nous utilisons le rappel terminé, la redirection ne sera pas prise en compte. Donc, la redirection ne se produit même pas, car le code ci-dessous n'est pas exécuté. Merci.
// Module de connexion 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");
});
}
Je redirige après mon handlePendingSignIn () et rencontre le même problème. Mon plus gros problème est que sur mobile, l'application reste dans la nouvelle fenêtre contextuelle, plutôt que de se fermer et de revenir à la fenêtre d'appel d'origine.
placer:
https://webby-daily.runkodapps.com/
vidéo / démo:
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];
});
}
...
Commentaire le plus utile
Bonne capture @muneebm . J'ai une idée de la façon dont je pourrais résoudre ce problème.