2017-05-18 1 views
1

Je développe une application basée sur Parse-server et je veux offrir une connexion sociale. J'ai trouvé ce guide dans la documentation http://docs.parseplatform.org/js/guide/#linking-users.Parse-serveur social login

J'ai commencé à implémenter le login social par google. Je ne les étapes suivantes:

1) J'ajouté les lignes suivantes aux paramètres de ParseServer

var api = new ParseServer({ 
... 
    auth:{ 
     google: {} 
    }, 
... 
}); 

2) Je ne l'authentification par hello.js sur le côté client (appel fonction user._linkWith sur connexion)

hello.init({ 
    google: 'My Google id' 
}); 

hello.on('auth.login', function(auth) { 
    // Call user information, for the given network 
    hello(auth.network).api('me').then(function(r) { 
    const user = new Parse.User(); 
    user._linkWith(auth.network, auth.authResponse).then(function(user){ 
     console.log('You are logged in successfully.'); 
    }); 
    }); 
}); 

quand je débogués, je trouve qu'il échoue dans _linkWith() fonction, lorsque l'objet de fournisseur prépare. Object AuthProviders, qui doit stocker tous les fournisseurs, est vide. A cause de cela, la déclaration provider = authProviders ['google']; conduit à indéfini. Appelant provider.authenticate (...); conduit à l'erreur "Impossible de lire la propriété 'authentifier' de undefined"

Qu'est-ce que je manque ou que fais-je tort?

Merci pour toutes vos réponses.

Honza

Répondre

1

Avez-vous enregistré le authenticationProvider? Vous trouverez des exemples dans nos tests unitaires sur la façon de le faire:

https://github.com/parse-community/parse-server/blob/5813fd0bf8350a97d529e5e608e7620b2b65fd0c/spec/AuthenticationAdapters.spec.js#L139

+0

Il semble (contrairement à ce que des exemples de guidage Parse JS) que les options peuvent avoir un champ « authData » avec « id » et les références imbriquées à l'intérieur il. Sinon, cette réponse s'applique. J'ai réussi à trouver un exemple pour Facebook dans le FacebookUtils fourni, voir https://github.com/parse-community/Parse-SDK-JS/blob/master/src/FacebookUtils.js Y at-il quelque chose de similaire pour d'autres tiers fournisseurs d'authentification? Le guide JavaScript Parse Server ne mentionne pas complètement l'inscription authenticationProvider. –

0

J'ai aussi eu cette erreur et regardé le _linkWith (fournisseur, options) code source. Il vérifie si options a un champ authData (qui à son tour doit contenir id et les informations d'identification). Si oui, il utilise options.authData. Sinon, il revient sur la recherche d'un fournisseur d'authentification précédemment enregistré mentionné dans la réponse précédente.

C'est un fragment de code que je utilise:

const authData = { 
    "id": profile.getId(), 
    "id_token": id_token 
} 
const options = { 
    "authData": authData 
} 
const user = new Parse.User(); 
user._linkWith('google', options).then(function(user) { 
    console.log('Successful user._linkWith(). returned user=' + JSON.stringify(user)) 
}, function(error) { 
    console.log('Error linking/creating user: ' + error) 
    alert('Error linking/creating user: ' + error) 
    // TODO handle error 
})