2012-11-07 10 views
5

Ich habe ein kleines Problem mit Meteor und Twitter. Alles, was ich tun möchte, ist einen Tweet durch einen Klick auf eine Schaltfläche zu posten. Dafür muss ich mich gegenüber Oauth gegenüber dem Twitterservice authentifizieren.Wie schreibe ich einen Tweet mit Meteor.js, Twitter und Oauth

Im Moment mache ich die Authentifizierung in einer sehr komplizierten Art und Weise von Client zu Server und zurück. Aber jetzt habe ich die Funktion Meteor.loginWithTwitter gefunden. Ursprünglich dachte ich, diese Funktion dient nur dazu, dich mit den Twitterschlüsseln in deine eigene Anwendung einzuloggen, jetzt bin ich mir nicht mehr so ​​sicher. Wahrscheinlich kann ich es auch für mein Problem verwenden. Weil es scheint, dass der Oauth-Prozess vollständig (und in einfacher Weise) in Meteor implementiert ist.

Leider kann ich keine Dokumentation oder Beispiele finden, um sich einfach anzumelden und das finale oauth_token zu bekommen. Und so alles, was ich von Meteor bekam damals versuche ich den folgenden Code, ist diese Fehlernachricht:

Erromessage: Accounts.ConfigError {Meldung: „Dienst nicht konfigurierte“}

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

Ich weiß, ich habe zu betreten irgendwo meine Appinformation wie der Consumer Key, aber ich habe keine Ahnung wo. Kann mir jemand helfen und kennt ein paar Beispiele für mich? Oder weiß ich ob ich überhaupt auf dem richtigen Weg bin?

Danke und Gruß Philipp

Antwort

6

Der einfachste Weg, dies zu tun: Fügen Sie die Konten-ui-Paket:

meteor add accounts-ui accounts-twitter 

und in der Vorlage zu tun

{{loginButtons}} 

Beim ersten Start der Anwendung führt ein Klick auf den Login-Button zum Einrichtungsvorgang. Sie erstellen eine Twitter-Anwendung und kopieren den Konsumentenschlüssel und das Konsumentengeheimnis in ein Formular, das Ihnen der Meteor präsentiert. Danach können Sie sich mit Twitter einloggen.

Vergewissern Sie sich die neueste Version Meteor (0.5.2 in diesem Moment)

+1

diese Antwort veraltet ist jetzt sollte es sein '{{> loginButtons}}' – pahan

1

Sie auch Ihren Consumer-Key und Geheimnis mit Code Konfiguration verwendet werden können, ist dies ein Beispiel mit Weibo aber seine Arbeit für Twitter, Google usw. ... (Server-Seite):

// 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

Sie müssen hinzufügen, was @ Tom31 in der Server-Seite vorgeschlagen, das heißt, ich habe ein/Server/Server.js

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

Schließlich Ihr Zugriffstoken in Ihrem Benutzer in der Datenbank gespeichert sind, aber diese Informationen es propagiert wird nicht an den Client, und wenn Sie Zugriff darauf haben wollen, können Sie neue eine serverseitige Methode zu erstellen und Zugriff auf sie durch Meteor.call oder Meteor.apply

Aktualisiert: Beispiel meiner Serverseite Methode

ich habe meine Server-Seite Methode wie folgt erstellt:

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

wo removeSensibleFields ein Verfahren ist, alle unnötigen/private Informationen zu entfernen, die nicht zurück an den Client gesendet werden kann

+0

Können Sie ein Beispiel dafür, wie die serverseitige Methode aussehen würde? – Rico

+0

Mein Beitrag wurde aktualisiert – bitIO