2012-11-07 5 views
5

J'ai un petit problème avec Meteor et Twitter. Tout ce que je veux faire est de poster un tweet en cliquant sur un bouton. Pour cela je dois m'authentifier sur Oauth au Twitterservice. En ce moment, je procède à l'authentification d'une manière très compliquée, passant du client au serveur et vice versa. Mais maintenant j'ai trouvé la fonction Meteor.loginWithTwitter. Au départ, je pensais que cette fonction est seulement pour vous connecter à votre propre application avec les touches Twitter, maintenant je ne suis plus si sûr. Je peux probablement aussi l'utiliser pour mon problème. Parce qu'il semble que le processus d'Oauth est complètement (et de manière simple) implémenté dans Meteor. Malheureusement, je ne trouve pas de documentation ou d'exemples pour me connecter et obtenir le dernier mot-clé oauth_token. Et donc tout ce que je suis arrivé de Meteor époque j'essayer le code suivant, est-ce errormessage:Comment poster un tweet avec Meteor.js, Twitter et Oauth

Erromessage: Accounts.ConfigError {message: "service non configuré"}

Meteor.loginWithTwitter(function(err){ 
    if (err){ 
    console.log(err) 
    }else{ 
    console.log("yeah"); 
} 
}); 

Je sais que je dois entrer quelque part mon Appinformation comme la clé du consommateur, mais je n'ai aucune idée d'où. Quelqu'un peut-il m'aider et connaît quelques exemples pour moi? Ou sait si je suis même sur la bonne voie?

Merci et salutations Philipp

Répondre

6

La meilleure façon de le faire: Ajoutez le package comptes-ui:

meteor add accounts-ui accounts-twitter 

et dans votre modèle ne

{{loginButtons}} 

Au premier démarrage de l'application, un clic sur le bouton de connexion vous guidera à travers le processus d'installation. Vous allez créer une application Twitter et copier la clé du consommateur et le secret du consommateur dans un formulaire, que meteor vous présente. Ensuite, vous pouvez vous connecter en utilisant Twitter.

Assurez-vous d'utiliser la dernière version Meteor (0.5.2 en ce moment)

+1

cette réponse est obsolète maintenant il devrait être '{{> loginButtons}}' – pahan

1

Vous pouvez config aussi votre clé et le code secret avec le code, ceci est un exemple avec Weibo mais son travail pour twitter, google etc ... (côté serveur):

// first, remove configuration entry in case service is already configured 
Accounts.loginServiceConfiguration.remove({ 
    service: "weibo" 
}); 
Accounts.loginServiceConfiguration.insert({ 
    service: "weibo", 
    clientId: "1292962797", 
    secret: "75a730b58f5691de5522789070c319bc" 
}); 
1

Vous devez ajouter ce @ Tom31 suggéré dans votre côté serveur, à savoir, j'ai un/serveur/serveur.js

Accounts.loginServiceConfiguration.remove({"service": "twitter"}); 
Accounts.loginServiceConfiguration.insert({ 
"service": "twitter", 
"consumerKey" : "<yours>", 
"secret" : "<yours>" 
}); 

Enfin, votre jeton d'accès sont stockés dans votre utilisateur à la base de données, mais cette information, il ne se propage pas au client et, si vous voulez y avoir accès, vous nouveau de créer une méthode côté serveur et y accéder via Meteor.call ou Meteor.apply

Mise à jour: Exemple de ma méthode côté serveur

J'ai créé ma méthode côté serveur comme ceci:

Meteor.methods({ 
... 
    userGet: function(id) { 
    return removeSensibleFields(Meteor.users.findOne({ _id: id })); 
    } 
... 
}); 

removeSensibleFields est une méthode pour supprimer toutes les informations inutiles/privé qui ne peut être renvoyé au client

+0

Pouvez-vous fournir un exemple de ce à quoi ressemblerait la méthode côté serveur? – Rico

+0

Mis à jour mon message – bitIO

Questions connexes