फेसबुक: स्थायी पेज एक्सेस टोकन?


193

मैं एक ऐसे प्रोजेक्ट पर काम करता हूं जिसके फेसबुक पेज उसके एक डेटा स्रोत के रूप में हैं। यह इसमें कोई जीयूआई शामिल नहीं होने के साथ समय-समय पर कुछ डेटा आयात करता है। फिर हमारे पास पहले से मौजूद डेटा दिखाने के लिए हम एक वेब ऐप का उपयोग करते हैं।

सारी जानकारी सार्वजनिक नहीं है। इसका मतलब है कि मुझे एक बार डेटा तक पहुंचना होगा और फिर इसे रखना होगा। हालाँकि, मैं इस प्रक्रिया को नहीं जानता और मुझे अभी तक इस पर एक अच्छा ट्यूटोरियल नहीं मिला है। मुझे लगता है कि मुझे इसकी आवश्यकता है access_token, मैं इसे उपयोगकर्ता से कैसे प्राप्त कर सकता हूं, कदम से कदम? उपयोगकर्ता एक फेसबुक पेज का एक व्यवस्थापक है, क्या उसे पेज पर हमारे कुछ एफबी ऐप जोड़ना होगा?

संपादित करें: टिप के लिए @phwd धन्यवाद। मैंने एक ट्यूटोरियल बनाया कि कैसे एक स्थायी पेज एक्सेस टोकन प्राप्त किया जाए, यहां तक ​​कि offline_accessअब मौजूद नहीं है।

संपादित करें: मुझे अभी पता चला है कि इसका उत्तर यहां दिया गया है: सर्वर के लिए एफबी पृष्ठ की जानकारी खींचने के लिए लंबे समय तक चलने वाला एफबी एक्सेस-टोकन



यह निश्चित रूप से ऐसा लगता है। मेरे पास बेहतर शीर्षक है, उसके पास अधिक विस्तृत प्रश्न है और हम दोनों के पास लगभग एक ही उत्तर है।
वलसेक

जवाबों:


638

फेसबुक के विस्तारित पृष्ठ टोकन प्रलेखन में दिए गए निर्देशों के बाद मैं एक पृष्ठ एक्सेस टोकन प्राप्त करने में सक्षम था जो समाप्त नहीं होता है।

मैं इन सभी चरणों के लिए ग्राफ़ एपीआई एक्सप्लोरर का उपयोग करने का सुझाव देता हूं, जहां अन्यथा कहा गया है, को छोड़कर।

0. फेसबुक ऐप बनाएं

यदि आपके पास पहले से कोई ऐप है , तो चरण 1 पर जाएं।

  1. माय एप्स पर जाएं ।
  2. "+ एक नया ऐप जोड़ें" पर क्लिक करें।
  3. एक वेबसाइट ऐप सेटअप करें।

आपको इसकी अनुमति या कुछ भी बदलने की आवश्यकता नहीं है। आपको अपने पहुंच टोकन के साथ काम करने से पहले बस एक ऐप की आवश्यकता होती है।

1. यूजर शॉर्ट लिव्ड एक्सेस टोकन प्राप्त करें

  1. पर जाएं ग्राफ़ एपीआई एक्सप्लोरर
  2. आप जिस एप्लिकेशन का एक्सेस टोकन प्राप्त करना चाहते हैं, उसका चयन करें ("एप्लिकेशन" ड्रॉप-डाउन मेनू में, "माई एप्स" मेनू नहीं)।
  3. "गेट टोकन"> "यूजर एक्सेस टोकन प्राप्त करें" पर क्लिक करें।
  4. पॉप-अप में, "विस्तारित अनुमतियाँ" टैब के तहत, "manage_pages" की जाँच करें।
  5. "गेट एक्सेस टोकन" पर क्लिक करें।
  6. लक्ष्य पृष्ठ को प्रबंधित करने के लिए उपयोग करने वाले फेसबुक खाते से पहुंच प्रदान करें। ध्यान दें कि यदि यह उपयोगकर्ता अंतिम का उपयोग खो देता है, तो कभी न समाप्त होने वाला एक्सेस टोकन काम करना बंद कर देगा।

टोकन जो "एक्सेस टोकन" फ़ील्ड में दिखाई देता है, वह आपका अल्पकालिक एक्सेस टोकन है।

2. लॉन्ग-लीव्ड एक्सेस टोकन जेनरेट करें

के बाद इन निर्देशों का फेसबुक डॉक्स से, करने के लिए एक GET अनुरोध भेजना

https://graph.facebook.com/v2.10/oauth/access_token?grant_type=fb_exchange_token&client_id= {app_id} & client_secret = " app_secret} & fb_exchange_token = {short_liven_token}

आपके ऐप की आईडी और गुप्त में प्रवेश करना और पिछले चरण में उत्पन्न अल्पकालिक टोकन।

आप ग्राफ एपीआई एक्सप्लोरर का उपयोग नहीं कर सकते । किसी कारण से यह इस अनुरोध पर अटक जाता है। मुझे लगता है कि इसका कारण JSON नहीं है, बल्कि एक क्वेरी स्ट्रिंग है। चूंकि यह एक GET अनुरोध है, आप बस अपने ब्राउज़र में URL पर जा सकते हैं।

प्रतिक्रिया इस तरह दिखनी चाहिए:

{"access_token": " ABC123 ", "token_type": "वाहक", "expires_in": 5183791}

"ABC123" आपके लंबे समय तक चलने वाला टोकन होगा। आप इसे सत्यापित करने के लिए एक्सेस टोकन डिबगर में डाल सकते हैं। "एक्सपायर" के तहत इसमें "2 महीने" जैसा कुछ होना चाहिए।

3. यूजर आईडी प्राप्त करें

लंबे समय तक रहने वाले टोकन का उपयोग करते हुए, GET अनुरोध करें

https://graph.facebook.com/v2.10/me?access_token= {long_lived_access_token}

idक्षेत्र आपका खाता आईडी है। आपको अगले चरण के लिए इसकी आवश्यकता होगी।

4. स्थायी पृष्ठ एक्सेस टोकन प्राप्त करें

के लिए एक GET अनुरोध करें

https://graph.facebook.com/v2.10/ {account_id} / accounts? access_token = {long_lived_access_token}

JSON की प्रतिक्रिया में एक dataफ़ील्ड होना चाहिए जिसके तहत उन मदों की एक सरणी होती है, जिन तक उपयोगकर्ता की पहुँच होती है। उस पृष्ठ के लिए आइटम ढूंढें जिसे आप स्थायी पहुंच टोकन चाहते हैं। access_tokenक्षेत्र अपने स्थायी पहुँच टोकन होना चाहिए। इसे कॉपी करें और इसे एक्सेस टोकन डिबगर में परीक्षण करें । "एक्सपायर" के तहत इसे "नेवर" कहना चाहिए।


14
फेसबुक ने इसे गड़बड़ कर दिया इसलिए यह अब काम नहीं करता है। :-( ऊपर 1.5 कदम के बाद ("एक्सेस टोकन प्राप्त करें" बटन पर क्लिक करते हुए) निम्नलिखित डायलॉग में एक लाल चेतावनी दिखाई देती है, जिसमें कहा गया है "लॉगिन रिव्यू के लिए सबमिट करें - नीचे दी गई कुछ अनुमतियां फेसबुक द्वारा उपयोग के लिए अनुमोदित नहीं की गई हैं" और यह भी एक पाठ के साथ पैडलॉक "यह फेसबुक पर एप्लिकेशन को पोस्ट नहीं होने देता है" नीचे एक ही समय में दिखाई देता है। इसलिए, चरण 1.5 और 1.6 के बीच एक नया कदम डाला जाना चाहिए, यह पढ़ते हुए "अपने ऐप के साथ बहुत थकाऊ श * टी करें," फिर इसे समीक्षा के लिए प्रस्तुत करें, फिर प्रार्थना करें और प्रतीक्षा करें। ":( किसी को भी शुद्ध परीक्षण ऐप के लिए इसके बारे में एक तरीका पता है?
प्रश्न संख्या

10
अंतिम चरण में जाने वाले किसी भी व्यक्ति के लिए, और ब्राउज़र बस लौटता है: message: "(#100) Tried accessing nonexisting field (accounts) on node type (Page)", type: "OAuthException", code: 100 एफबी एक्सेस टोकन डिबगर पर जाएं और अपने long_lived_access_token का परीक्षण करें। लगातार मैंने देखा है कि कुछ मिनटों के बाद, यदि आप वापस जाते हैं और long_lived_access_token को रीचार्ज करते हैं, तो FB एक्सेस टोकन डिबगर तब संकेत देगा कि टोकन स्थायी है (समाप्त हो गया: कभी नहीं)
AdadctProfectorFalcon

14
मैं कसम खाता हूँ, अगर मैंने इस उत्तर को नहीं पढ़ा था, तो मैं अभी भी अपने सिर को दीवार पर एक छोटे से टोकन के साथ पीट रहा हूँ ... बुरा करने के लिए कि अंतिम भाग काम नहीं कर रहा है ... मुझे (#100) Tried accessing nonexisting field (accounts) on node type (Page)त्रुटि मिल रही है .. चरण 5 के साथ आगे बढ़ने में असमर्थ ... फिर भी, धन्यवाद ... LE: @Vlasec द्वारा प्रदान किए गए उत्तर के अंतिम भाग को देखें। आप क्वेरी / {pageId} द्वारा स्थायी एक्सेस टोकन प्राप्त कर सकते हैं? फ़ील्ड = access_token & access_token = {long_lived_access_token} इतनी समस्या तय की गई।
मुजनोई ग्यूला तमस

15
मेरे अंतिम पहुँच टोकन प्राप्त करने के लिए इसे अंतिम चरण के लिए उपयोग करना था क्योंकि यह कहता है कि "खाते" मौजूद नहीं हैं, यहां तक ​​कि v2.7 के लिए भी:https://graph.facebook.com/v2.7/{page_id}?fields=access_token&access_token={long_lived_access_token}
Reado

5
अंतिम चरण में मुझे निम्नलिखित अपवाद मिल रहे हैं {"error": {"message": "Syntax error \" के बजाय स्ट्रिंग का अपेक्षित अंत \ "? \"। \ "चरित्र 11 पर: access_toke \ u200c \ u200bn। , "टाइप": "OAuthException", "कोड": 2500, "fbtrace_id": "A8 + gtSaShIO"}} किसी को पता है कि इसे कैसे हल करना है ????
लुसी

89

यहाँ केवल ग्राफ एपीआई एक्सप्लोरर और एक्सेस टोकन डिबगर का उपयोग करके मेरा समाधान है :

  1. ग्राफ एपीआई एक्सप्लोरर:
    • ऊपर दाईं ओर ड्रॉपडाउन मेनू से अपना ऐप चुनें
    • ड्रॉपडाउन (एक्सेस टोकन क्षेत्र का अधिकार) से "गेट यूजर एक्सेस टोकन" चुनें और आवश्यक अनुमतियों का चयन करें
    • उपयोगकर्ता पहुँच टोकन की प्रतिलिपि बनाएँ
  2. टोकन डिबगर को एक्सेस करें:
    • कॉपी किया गया टोकन चिपकाएं और "डीबग" दबाएं
    • "एक्सेस टोकन को एक्सटेंड करें" दबाएं और जेनरेट किए गए लंबे यूज़र एक्सेस टोकन को कॉपी करें
  3. ग्राफ एपीआई एक्सप्लोरर:
    • "टोकन टोकन" फ़ील्ड में टोकन कॉपी करें
    • "PAGE_ID? फ़ील्ड = access_token" के साथ एक GET अनुरोध करें
    • प्रतिक्रिया में स्थायी पृष्ठ एक्सेस टोकन खोजें (नोड "access_token")
  4. (वैकल्पिक) पहुँच टोकन डिबगर:
    • स्थायी टोकन पेस्ट करें और "डीबग" दबाएं
    • "एक्सपायर" "कभी नहीं" होना चाहिए

(एपीआई संस्करण 2.9-2.11, 3.0-3.1 के साथ परीक्षण किया गया)


3
प्रेस करने के लिए कोई "एक्स्टेंड एक्सेस टोकन" बटन नहीं है। शायद उन्होंने इसे निकाल लिया।
सीजर बिलिच


2
एक्सेस टोकन (चरण 2) का विस्तार करने और इसे फिर से डिबग करने के बाद, इसे कभी भी समाप्त नहीं किया जाना चाहिए। आप बस चरण 3 और 4 पास कर सकते हैं
daniel_serretti

1
इस उत्तर के लिए धन्यवाद ऊपर दिए गए बड़े की तुलना में समझने में अधिक आसान है। यह वास्तव में मददगार था।
पॉल लाफित्ते

2
ओह, यार, तुम आग पर हो! बहुत धन्यवाद! मैंने इस विकल्प को खोजने के लिए इतना समय बर्बाद किया, क्योंकि मैं किसी ऐप को ठीक से डिबग नहीं कर सकता था!
किलिमुमिनाति

11

Vlasec उत्तर में अनुशंसित चरणों के अलावा , आप उपयोग कर सकते हैं:


3
यह अब काम नहीं करता है। टोकन केवल एक घंटे तक रहता है
Flashsnake

@flashsnake क्या आपने वास्तव में v2.8 पर इसका परीक्षण किया है? टोकन डिबगर शो
एक्सपायर्स

मुझे याद नहीं है। मैंने इसका परीक्षण किया हो सकता है।
फ्लैशसेक

11

मैंने इसे आसान बनाने के लिए एक PHP स्क्रिप्ट बनाई। एक ऐप बनाएं । में ग्राफ़ एपीआई एक्सप्लोरर अपने ऐप चुनें और manage_pages और publish_pages अनुमति के साथ टोकन एक उपयोगकर्ता मिलता है। इसके बारे में पेज के नीचे अपने पेज की आईडी खोजें। कॉन्फिग वर्जन भरें और स्क्रिप्ट चलाएं।

<?php
$args=[
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
];

echo generate_token($args);

function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/{$userid}/accounts?access_token={$longtoken}")); // get permanent token
    foreach($r->data as $d) if($d->id==$args['pageid']) return $d->access_token;
}

1
+1 बस कोशिश की और, इन सभी आंशिक रूप से मूल्यह्रास उत्तरों के बीच, यह अद्भुत काम करता है! मुझे यह उत्तर पसंद है क्योंकि भविष्य के संशोधन यहां और वहां थोड़े से संपादन के साथ आसान हैं।
सिद्धान्त रिमल

क्षमा करें, मुझे इस उत्तर को संपादित करने की अनुमति नहीं थी। इसलिए, ग्राफ़ एपीआई 2.9 के लिए, मैंने इसके बजाय एक और उत्तर लिखा ।
सिद्धान्त रिमल

लगता है जैसे उन्होंने सामान को 2.9 के साथ बदल दिया क्योंकि इनमें से कोई भी उदाहरण अब काम नहीं करता है
सीज़र बीलिच

10

जीवन को आसान बनाने के लिए एक और PHP उत्तर। फेसबुक ग्राफ एपीआई 2.9 के लिए अपडेट किया गया । बस 'er up और load भरें।

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$userid}?fields=access_token&access_token={$longtoken}")); // get permanent token
    if($r->id==$args['pageid']) $finaltoken=$r->access_token;
    return $finaltoken;
}
?>

परिशिष्ट: (वैकल्पिक)

ग्राफ़ 2.9 इसके बाद, आप एक्सेस एक्सेस डिबगर टूल के निचले भाग में एक्स्टेंड एक्सेस टोकन पर क्लिक करके लंबी एक्सेस टोकन प्राप्त करने की परेशानी को छोड़ सकते हैं । के बारे में जानकारी के साथ और नीचे दिए गए स्थायी पहुंच टोकन प्राप्त करने के लिए php चलाते हैं।pageidlonglivedtoken

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'longlivedtoken'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$args['pageid']}?fields=access_token&access_token={$args['longlivedtoken']}"));
return $r->access_token;
}
?>

हालाँकि दूसरा कोड आपको बहुत परेशानी से बचाता है, लेकिन जब तक आप बहुत जल्दबाजी में नहीं होते हैं, तब तक मैं पहला php कोड चलाने की सलाह देता हूं क्योंकि यह पेजिड और यूजरिड को क्रॉस-चेक करता है। यदि आप गलती से उपयोगकर्ता टोकन चुनते हैं तो दूसरा कोड काम करना समाप्त नहीं करेगा।

आभार dw1 और Rob


एक्स्टेंड एक्सेस टोकन बटन नहीं है, क्या मुझे कुछ याद आ रहा है?
सीजर बिलिच

@ सीजरबिलिच: आपको पहले एक शॉर्ट एक्सेस टोकन डिबग करना होगा। जब आप किसी लघु एप्लिकेशन टोकन को डीबग करते हैं तो यह परिणामों के नीचे दिखाई देता है । चूँकि आप इसे देख नहीं सकते, इसलिए आपने उपयोगकर्ता पहुँच टोकन को डीबग कर लिया होगा। ध्यान दें कि यह उत्तर पहुंच टोकन का उपयोग करने के लिए लागू नहीं होता है; केवल ऐप एक्सेस टोकन का उपयोग किया जा सकता है उपयोगकर्ता Acess टोकन स्थायी नहीं हो सकते। वे लांग टोकन तक उत्पन्न किए जा सकते हैं।
सिद्धान्त रिमल

1
@ CesarBielich मुझे लगता है कि आप यहाँ कुछ भ्रमित कर रहे हैं। आप उपयोगकर्ता, एप्लिकेशन और पेज के लिए पहुंच टोकन बना सकते हैं। आपको टोकन के लिए अनुरोध करने से पहले एप्लिकेशन फ़ील्ड चुनने के बजाय, आपके द्वारा बनाए गए एप्लिकेशन को चुनना होगाGraph API Explorer
सिद्धान्त रिमल

@ केसरबाइच: यदि दूसरा आपके लिए बहुत ही भ्रामक है तो पहली विधि का उपयोग करें। आप बस पहले एक में इनपुट फील्ड भरते हैं और सब कुछ अपने आप हो जाता है :)
सिद्धान्त रिमल

क्षमा करें मैं एक अलग पोस्ट के बारे में टिप्पणी कर रहा था जिसे मैंने कल रात किया था। हाँ किसी कारण के लिए मैं तुम्हारा काम कर सकता है और मुझे एक कभी निष्कासित टोकन नहीं बना सकता। मुझे v2.9दूसरी कॉल में हटाना पड़ा और उसने मेरे लिए काम किया। अजीब
सीजर Bielich

6

मैंने इन चरणों की कोशिश की: https://developers.facebook.com/docs/marketing-api/access#graph-api-exexorer

स्थायी पृष्ठ एक्सेस टोकन प्राप्त करें

  • ग्राफ एपीआई एक्सप्लोरर पर जाएं
  • अपने चयन एप्लिकेशन में आवेदन
  • लंबे समय तक रहा पहुँच में टोकन पेस्ट पहुंच टोकन
  • बगल में, पहुंच टोकन , आप जिस पृष्ठ को टोकन एक पहुँच चाहते हैं। पहुंच टोकन एक नए स्ट्रिंग के रूप में दिखाई देता है।
  • मैं क्लिक करेंइस पहुँच टोकन के गुणों को देखने के लिए
  • गुणों की जांच करने के लिए "एक्सेस टोकन डिबगर" टूल को खोलने के लिए "ओपन इन एक्सेस टोकन टूल" बटन पर फिर से क्लिक करें

एक टिप, यह केवल मेरे लिए काम किया जब पृष्ठ भाषा अंग्रेजी है


1
यह आदमी!!! 5 आभासी बियर। यह स्वीकृत उत्तर के चरण 5 को बदलने का काम करता है। ग्राफ संस्करण 2.8
रूट -

1
मैंने फेसबुक एपीआई का उपयोग करने में सक्षम होने में हफ्तों को बर्बाद कर दिया है। यह आज तक, सबसे अधिक भ्रमित और असंगत टोकन है जो मुझे आया है। यह समाधान अभी भी पूरी तरह से काम करता है .. अक्टूबर, 2017
user919426

4

यदि आप केवल पृष्ठ डेटा का अनुरोध कर रहे हैं, तो आप पृष्ठ एक्सेस टोकन का उपयोग कर सकते हैं। उपयोगकर्ता एक्सेस टोकन प्राप्त करने के लिए आपको केवल एक बार उपयोगकर्ता को अधिकृत करना होगा; इसे दो महीने की वैधता तक बढ़ाएं फिर पृष्ठ के लिए टोकन का अनुरोध करें। यह सब परिदृश्य 5 में समझाया गया है । ध्यान दें, कि अधिग्रहीत पेज एक्सेस टोकन केवल तभी तक मान्य है, जब तक यूजर एक्सेस टोकन मान्य है।


क्षमा करें, शायद मैं पर्याप्त स्पष्ट नहीं था। मैंने टोकन के बारे में पढ़ा है, मुझे बस यह जानने की ज़रूरत है कि उपयोगकर्ता से अनुमति के लिए कैसे पूछें और मेरे ऐप पर एक टोकन स्थानांतरित करें। ऐसा लगता है कि मुझे कुछ फेसबुक "ऐप" बनाने की आवश्यकता है जो एकमात्र उद्देश्य अनुमतियों के लिए पूछ रहा है, क्या यह सही है?
वलसेक

1
@Viasec एक्सेस टोकन प्राप्त करने का एकमात्र तरीका एक एप्लिकेशन के माध्यम से सही है जैसा कि यहां बताया गया है। Developers.facebook.com/docs/facebook-login
phwd

धन्यवाद, मुझे किसी तरह इसकी अवहेलना करनी चाहिए थी, मैंने इसे एपीआई खंड में कहीं न कहीं मान लिया, जो गलत था। मैं इसे देखूंगा, मुझे आशा है कि यह मेरे प्रश्न का उत्तर देगा।
वलसेक

4

डोनट के उल्लेख के अनुसार मैंने 5 कदम से ऊपर का स्थायी अभिगम टोकन प्राप्त किया। हालाँकि, 5 वें चरण में, स्थायी एक्सेस टोकन उत्पन्न करते हुए, इसके लंबे समय तक एक्सेस टोकन लौटाया जाता है (जो 2 महीने के लिए वैध होता है) स्थायी एक्सेस टोकन नहीं (जो कभी समाप्त नहीं होता)। मैंने जो देखा वह ग्राफ एपीआई का वर्तमान संस्करण V2.5 है। यदि आप V2.5 के साथ स्थायी एक्सेस टोकन प्राप्त करने की कोशिश कर रहे हैं, तो यह लंबे समय तक एक्सेस टोकन दे रहा है। V2.2 के साथ एपीआई कॉल करने की कोशिश करें (यदि आप ग्राफ़ एपीआई एक्सप्लोरर में संस्करण को बदलने में सक्षम नहीं हैं, तो एपीआई कॉल https को हिट करें: //graph.facebook.com/v2.2/ {account_id} / accounts? access_token = {long_lived_access_token} के साथ नए टैब में V2.2) तो आपको स्थायी एक्सेस टोकन मिलेगा (जो कभी समाप्त नहीं होगा)


परिणाम प्राप्त करने के लिए एपीआई संस्करणों को वापस करने से भविष्य में मुझे और अधिक काम मिलेगा, विशेष रूप से चूंकि एपीआई संस्करण एक निश्चित समय के बाद समाप्त हो जाता है।
SlickRemix

यह शून्य देता है :( हमें पेज एक्सेस टोकन कैसे मिलता है?
नैंसी ठक्कर

3

उल्लिखित विधियों के अलावा यह उल्लेखनीय है कि सर्वर-से-सर्वर अनुप्रयोगों के लिए, आप इस प्रकार के स्थायी अभिगम टोकन का भी उपयोग कर सकते हैं: app_id | app_secret इस प्रकार के अभिगम टोकन को ऐप टोकन कहा जाता है। इसका उपयोग आम तौर पर आपके एप्लिकेशन बैक-एंड के भीतर सार्वजनिक नोड्स के लिए ग्राफ़ एपीआई और क्वेरी को कॉल करने के लिए किया जा सकता है। यह यहाँ उल्लेख किया गया है: https://developers.facebook.com/docs/facebook-login/access-tokens


1
क्या यह पृष्ठों तक किसी भी तरह की पहुंच की अनुमति देता है? मुझे लगता है कि ऐसा नहीं है और उस मामले में यह वास्तव में सवाल का जवाब नहीं देता है।
वलसेक

@Vlasec यह आपको एक सार्वजनिक पोस्ट पर टिप्पणियों का उपयोग करने की अनुमति देता है
अली गजनी

1
हालांकि यह कुछ के लिए पर्याप्त हो सकता है, यह प्रश्न का उत्तर नहीं देता है।
Vlasec

2

@Donut के लिए धन्यवाद, मैं जावास्क्रिप्ट में कभी भी समाप्त होने वाले एक्सेस टोकन प्राप्त करने में कामयाब नहीं हुआ।

// Initialize exchange
fetch('https://graph.facebook.com/v3.2/oauth/access_token?grant_type=fb_exchange_token&client_id={client_id}&client_secret={client_secret}&fb_exchange_token={short_lived_token}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Get the user data
    fetch(`https://graph.facebook.com/v3.2/me?access_token=${json.access_token}`)
    .then((data) => {
        return data.json();
    })
    .then((userData) => {
        // Get the page token
        fetch(`https://graph.facebook.com/v3.2/${userData.id}/accounts?access_token=${json.access_token}`)
        .then((data) => {
            return data.json();
        })
        .then((pageToken) => {
            // Save the access token somewhere
            // You'll need it at later point
        })
        .catch((err) => console.error(err))
    })
    .catch((err) => console.error(err))
})
.catch((err) => {
    console.error(err);
})

और फिर मैंने इस तरह से सहेजे गए टोकन का उपयोग किया

fetch('https://graph.facebook.com/v3.2/{page_id}?fields=fan_count&access_token={token_from_the_data_array}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Do stuff
})
.catch((err) => console.error(err))

मुझे उम्मीद है कि कोई इस कोड को ट्रिम कर सकता है क्योंकि यह थोड़े गन्दा है लेकिन यह एकमात्र तरीका था जिसके बारे में मैं सोच सकता था।


2

अगर आपके पास facebook का ऐप है, तो आप ऐप-आईडी और ऐप-सीक्रेट के साथ कोशिश कर सकते हैं।

पसंद :

access_token={your-app_id}|{your-app_secret}

इसे बार-बार टोकन बदलने की आवश्यकता नहीं होगी।


1

आवेदन अनुरोध सीमा (# 4) - FB API v2.1 और अधिक हो गई

इस जवाब ने मुझे "हमारे लिए अंतिम उत्तर" दिया और इसलिए यह बहुत संबंधित है इसलिए मैं इसे यहां जोड़ रहा हूं। जबकि यह ऊपर से संबंधित है यह अलग है और ऐसा लगता है कि एफबी ने प्रक्रिया को कुछ सरल किया है।

जब हमारी FB ने Ap 2.1 से v 2.1 तक लुढ़का तो हमारी साइट पर हमारे शेयरिंग काउंट रुक गए। हमारे मामले में हमारे पास पहले से ही एक एफबी एपीपी था और हम एफबी लॉगिन का उपयोग नहीं कर रहे थे। इसलिए हमें नए अनुरोध करने के लिए FB APP टोकन प्राप्त करने की आवश्यकता है । यह 23 अगस्त 2016 तक है।

  1. यहां जाएं: https://developers.facebook.com/tools/explorer
  2. एपीआई संस्करण का चयन करें और फिर GET का उपयोग करें और निम्नलिखित पेस्ट करें:

    /oauth/access_token?client_id={app-id}&client_secret={app-secret}&grant_type=client_credentials
    

    आप अपने ऐप आईडी से अपने ऐप आईडी और अपने ऐप सीक्रेट को हथियाना चाहते हैं । मुख्य FB Apps डेवलपर पेज

  3. ग्राफ़ क्वेरी चलाएँ और आप देखेंगे:

    {
       "access_token": "app-id|app-token",
       "token_type": "bearer"
    }
    

    कहाँ पे

    "एप्लिकेशन-आईडी"
    तथा
    "एप्लिकेशन-टोकन"
    आपके FB ऐप पेज से आपकी ऐप आईडी और आपके द्वारा प्राप्त की गई FB ऐप HASH होगी।

  4. अगला अपने नए एपीपी एक्सेस टोकन का परीक्षण करें: एफबी एक्सेस टोकन परीक्षक

  5. आपको चिपक कर देखना चाहिए

    "एप्लिकेशन-टोकन"
    टोकन परीक्षक में, समाप्ति तिथि / समय के बिना टोकन आधारित एक एकल ऐप।

हमारे मामले में हम FB js sdk का उपयोग कर रहे हैं, इसलिए हमने अपनी कॉल को ऐसा करने के लिए बदल दिया (कृपया ध्यान दें कि यह केवल शेयर की गिनती प्राप्त करता है न कि शेयर और टिप्पणी की गणना संयुक्त रूप से की जाती है) :

FB.api(
    '/','GET',{
    // this is our FB app token for our FB app 
        access_token: FBAppToken,
        "id":"{$shareUrl}","fields":"id,og_object{ engagement }"
}

यह अब ठीक से काम कर रहा है। हमें एफबी के साथ बहुत सी खोज और एक आधिकारिक बग रिपोर्ट मिली, जिसमें पुष्टि की गई कि हमें एफबी एपीआई को टोकन अनुरोध करना शुरू करना है। एक तरफ के रूप में मैंने अनुरोध किया था कि वे (FB) त्रुटि कोड (# 4) में एक सुराग जोड़ दें जो कि टोकन अनुरोध का उल्लेख करता है।

मुझे बस हमारे एक देव से एक और रिपोर्ट मिली है कि हमारी एफबी टिप्पणी की गिनती टूटी हुई है और साथ ही टोकन अनुरोधों की नई आवश्यकता के कारण इसलिए मैं इसे तदनुसार अपडेट करूंगा।


1
यह हमेशा ऐप का उपयोगकर्ता था जिसने लॉगिन किया था और ऐप को एक्सेस की अनुमति दी थी। वैसे भी, यह एक पेज एक्सेस टोकन बनाने के लिए प्रतीत नहीं होता है, इसलिए मुझे लगता है कि यह सवाल का एक वैध जवाब नहीं है। हालांकि दिलचस्प - शायद अपने खुद के एक क्यू / ए बनाते हैं?
वाल्सेक 14

1

इन उदाहरणों में से कई काम नहीं करते हैं, यह सुनिश्चित नहीं है कि अगर यह 2.9v से बाहर आ रहा है, लेकिन मैं अपना सिर पीट रहा था। वैसे भी मैंने @ dw1 संस्करण लिया और @KFunk वीडियो की मदद से इसे थोड़ा संशोधित किया और मुझे 2.9 के लिए यह काम मिला। उम्मीद है की यह मदद करेगा।

$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r = json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/{$args['pageid']}?fields=access_token&access_token={$longtoken}")); // get user id
    $finaltoken=$r->access_token;
    return $finaltoken;
}

अच्छा स्निपेट, लेकिन यह सवाल यह नहीं है कि इसे PHP में कैसे बनाया जाए, बल्कि एपीआई का उपयोग कैसे किया जाए, इसके बारे में, जो कि जावा या .NET में भी किया जा सकता है। उदाहरण के लिए मुझे इसे जावा में करने की आवश्यकता थी। Pseudocode या step by step गाइड PHP का उपयोग न करने वालों के लिए अधिक उपयोगी होगा।
वलसेक

2
@Vlasec मैं तर्क दूंगा कि यह PHP स्निपेट किसी भी छद्म कोड के बहुत करीब है और समझने में बहुत आसान है। कैसर सिर्फ कुछ एपीआई का उपयोग कर रहा है जो पहले से ही फेसबुक द्वारा प्रदान किए गए हैं। बाकी सामान स्व व्याख्यात्मक है।
सिद्धान्त रिमल

0

अप्रैल 2020 तक, मेरे पहले-स्थायी पृष्ठ टोकन ने 1 से 12 घंटे के बीच कुछ समय समाप्त करना शुरू कर दिया। मैंने manage_pagesपिछले लक्ष्य को प्राप्त करने की अनुमति के साथ उपयोगकर्ता के टोकन का उपयोग करना शुरू कर दिया (पृष्ठ की घटनाओं को रोकना)। वे टोकन स्थायी प्रतीत होते हैं।

मैंने इस पोस्ट में पाई गई जानकारी के आधार पर एक पाइथन स्क्रिप्ट बनाई, जिसे github.com/k-funk/facebook_permanent_token पर होस्ट किया गया था , ताकि इस बात पर नज़र रखी जा सके कि परमेस की क्या आवश्यकता है, और एक स्थायी टोकन प्राप्त करने के कौन से तरीके काम कर रहे हैं।


-1

मुझे यह उत्तर मिला जो इस उपकरण को संदर्भित करता है जिसने वास्तव में बहुत मदद की।

मुझे आशा है कि जब आप इसे पढ़ेंगे तो यह उत्तर अभी भी मान्य है।


ठीक है। क्या डोनट द्वारा जवाब अभी भी काम करता है, या उसे कुछ अतिरिक्त कदम की आवश्यकता है?
वलसेक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.