2014-11-16 8 views
7

मेरे स्थिति में सर्वर ने कोई उपयोगकर्ता बातचीत के साथ से कोआला रत्न के साथ लम्बा फेसबुक पहुँच टोकन और मैं क्या है:कैसे नवीनीकृत करने के लिए/सभी

  1. रेल एप्लिकेशन (रेल के पिछले संस्करण)
  2. कोआला मणि (पिछले संस्करण)
  3. 1 (एक) फेसबुक उपयोगकर्ता - (!) (उदाहरण के लिए यह मैं हूँ), और है कि किसी भी अमेरिकन प्लान लॉगिन रूपों के बिना एक वेबसाइट पर सभी, कोई और अधिक उपयोगकर्ताओं
  4. पृष्ठ है/इसी तरह सामान

अब स्थिति:

मैं एक वेबसाइट पर पेज बनाने रहा हूँ, मेरे कोड मेरे फेसबुक खाते से पिछले पदों खींच और उस पृष्ठ पर यह प्रदर्शित करना चाहिए।

क्या मैं पहले से ही किया है:

  1. मैं कोआला मणि जोड़ा
  2. फिर मैं अमेरिकन प्लान पर अपने डेवलपर खाते के तहत बनाए गए एप्लिकेशन और (एक ही प्रोफ़ाइल मेरे प्रोफ़ाइल पर कि एप्लिकेशन पूरा उपयोग करने के लिए अनुदान यह - डेवलपर और मैं पोस्ट खींचना चाहता हूं)
  3. फिर मैंने यहां से ऐप एक्सेस टोकन बनाया (https://developers.facebook.com/tools/accesstoken) - जब मैंने इसे डीबग किया, तो एफबी ने मुझे बताया कि यह टोकन एक छोटा सा टोकन है, जो 1 घंटे में समाप्त हो जाता है।
  4. तब मैं अपने मॉडल में उस कोड बनाया:

    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) 
    

तो, पहली बार मैं DB में सीधे मेरी छोटी लाइव टोकन शब्दों में कहें, तो मेरे कोड उसे वहाँ से, तो खींच सकते हैं, जब मैं पृष्ठ पुनः लोड करता हूं, मुझे नया, लंबे समय तक रहने वाला टोकन मिला है (इसकी समाप्ति तिथि 12/01/2015 है)।

लेकिन! जब भी मैं अपना पेज पुनः लोड करता हूं, मुझे नया टोकन मिलता है लेकिन उसी समाप्ति तिथि के साथ (एफबी का डीबगर मुझे वही कहता है, जब मैंने अपने पेज से टोकन कॉपी किया और इसे डीबगर में पेस्ट किया)।

मैं भी उस टोकन नवीकरण अवधि प्रति दिन एक समय है, अलग-अलग दिनों में ऐसा करने की कोशिश की क्योंकि मैं "कहीं" पढ़ते हैं, लेकिन:

टोकन हमेशा अलग है, लेकिन समय सीमा समाप्ति दिनांक हमेशा एक ही।

मैं क्या जरूरत है:

उस टोकन को नवीनीकृत करें या कोड ताकि टोकन मेरी तरफ से कार्रवाई के बिना स्वचालित रूप से अद्यतन किया जाता है लिखने के लिए, क्योंकि वहाँ कोई लॉगिन खिड़कियों या कुछ इसी तरह। इसे केवल सर्वरसाइड से ही काम करना चाहिए।

किसी भी विचार? पहले से ही मुझे बहुत सारी जानकारी और इसी तरह के प्रश्नों को पढ़ा गया है, लेकिन अधिकांश प्रश्न उपयोगकर्ता इंटरैक्शन से संबंधित हैं, जैसे उपयुक्त फॉर्मों में लॉग इन आदि। - कोई भाग्य नहीं:/

+0

@ जॉबिलि ने माइक के समाधान का काम किया? –

उत्तर

0

आप इस विधि को आजमा सकते हैं।

@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' को ऐप एक्सेस टोकन मिलता है, जिसका उपयोग केवल" ऐप सेटिंग्स को संशोधित और पढ़ने "और" ओपन ग्राफ क्रियाएं प्रकाशित करने के लिए किया जा सकता है। " https://developers.facebook.com/docs/facebook-login/access-tokens –

संबंधित मुद्दे

 संबंधित मुद्दे