2014-11-16 19 views
7

Meine Situation und was ich habe (!):Wie erneuern/verlängern Zugang Facebook-Token mit Koala Gem von Server ohne Interaktion Benutzer bei allen

  1. Rails-Anwendung (letzte Version von Rails)
  2. Koala Juwel (letzte Version)
  3. 1 (eins) Benutzer Facebook - (!) (zum Beispiel ich bin es), und das ist alles, nicht mehr Benutzer
  4. Seite auf einer Website ohne FB Login-Formulare/ähnliche Sachen

Jetzt Situation:

Ich schaffe Seite auf eine Website, sollte meinen Code letzten Beiträge von meinem Facebook-Account ziehen und es auf dieser Seite angezeigt werden soll.

Was habe ich schon gemacht:

  1. Ich habe gem Koala
  2. Dann habe ich App unter meinem Entwickler-Konto bei FB und gewähren zu dieser App vollen Zugang zu meinem Profil (es das gleiche Profil - Entwickler und von ich möchte Beiträge ziehen)
  3. Dann habe ich App-Zugriffs-Token von hier erstellt (https://developers.facebook.com/tools/accesstoken) - als ich es debuggte, FB sagte mir, dass dieser Token ist ein Kurz-Live-Token, die in 1 Stunde ablaufen.
  4. Dann habe ich diesen Code in meinem Modell:

    oauth = Koala::Facebook::OAuth.new(APP_ID, APP_SECRET) 
    new_access_info = oauth.exchange_access_token_info self.get_token <- here i pull token from DB 
    
    new_access_token = new_access_info["access_token"] 
    new_access_expires_at = DateTime.now + new_access_info["expires"].to_i.seconds 
    
    self.update_all(:token => new_access_token) ***<- saving token in db*** 
    self.update_all(:exp => new_access_expires_at) ***<- saving expiration of token in db*** 
    
    @facebook ||= Koala::Facebook::API.new(self.get_token) 
    

Also, ich zum ersten Mal meine Kurz Live-Token in db direkt gestellt, so ist es mein Code kann von dort ziehen, dann, wenn Ich lade Seite neu, ich habe NEW, long-live Token (es hat Ablaufdatum 12/01/2015).

ABER! Wann immer ich meine Seite neu lade, erhalte ich einen neuen Token, aber mit demselben Ablaufdatum (der Debugger von FB sagt mir dasselbe, wenn ich Token von meiner Seite kopiert habe und in den Debugger einfüge).

Ich habe sogar versucht, diese verschiedenen Tagen in zu tun, weil ich „irgendwo“ lesen, die Renovierungsarbeiten Token einmal pro Tag, aber:

Token immer anders, aber das Ablaufdatum immer gleich.

Was ich brauche:

Um dieses Token zu erneuern oder den Code schreiben, so dass das Token ohne Aktionen von meiner Seite automatisch aktualisiert wird, weil es kein Login-Fenster oder etwas ähnliches ist. Es sollte NUR serverseitig funktionieren.

Irgendwelche Gedanken? Lesen Sie bereits viele Informationen und ähnliche Fragen, aber die meisten Fragen beziehen sich auf Benutzerinteraktionen, wie Logins in geeigneten Formularen usw., also - kein Glück:/

+0

@Jobili, hat die Lösung von Mike funktioniert? –

Antwort

0

Sie können diese Methode versuchen.

@oauth = Koala::Facebook::OAuth.new(ENV['fb_app_id'], ENV['fb_app_secret']) 
oauth_access_token = @oauth.get_app_access_token 

@graph = Koala::Facebook::API.new(oauth_access_token) 
+0

'get_app_access_token' ruft ein App-Zugriffstoken ab, das nur zum" Ändern und Lesen der App-Einstellungen "und zum Veröffentlichen von Open-Graph-Aktionen verwendet werden kann. https://developers.facebook.com/docs/facebook-login/access-tokens –