फेसबुक एक्सेस टोकन को कैसे सत्यापित करें?


108

केवल एक चीज है जो सर्वर को करना है; बस किसी भी पहुंच टोकन की वैधता की जांच करें।

ग्राहक सर्वर यूजर आईडी और प्राप्त टोकन को भेजते हैं FB.getLoginStatus। जैसा कि मुझे उम्मीद थी, कोई भी URL होगा जो टोकन की वैधता तक पहुँच की जाँच करता है, जैसे http://xxx.facebook.com/access_token?=xxxxxxxxxxxxxxxxxxxxxxxxxxxx

यह रिटर्न देता है कि क्या यह उपलब्ध है या नहीं या इसके लिए कोई एपीआई (सर्वर साइड) नहीं है?


2
सिर्फ क्यों नहीं बुलाएं graph.facebook.com/me/permissions?
IgY



3
वहाँ एक अच्छा यूआई डेवलपर्स है
।facebook.com

जवाबों:


136

इसके लिए आधिकारिक रूप से समर्थित तरीका है:

GET graph.facebook.com/debug_token?
     input_token={token-to-inspect}
     &access_token={app-token-or-admin-token}

देखें जांच टोकन डॉक्स अधिक जानकारी के लिए।

एक उदाहरण प्रतिक्रिया है:

{
    "data": {
        "app_id": 138483919580948, 
        "application": "Social Cafe", 
        "expires_at": 1352419328, 
        "is_valid": true, 
        "issued_at": 1347235328, 
        "metadata": {
            "sso": "iphone-safari"
        }, 
        "scopes": [
            "email", 
            "publish_actions"
        ], 
        "user_id": 1207059
    }
}

24
मुझे लगता है कि यह कहना भ्रामक है कि फेसबुक में ब्रेकिंग बदलावों की शुरुआत होने की अधिक संभावना है। वे यह नहीं बताते हैं कि कहीं भी और उनके आधिकारिक डॉक्स यह स्पष्ट करते हैं कि यह एक्सेस टोकन को मान्य करने का तरीका है
एड साइक्स

1
@rynop, ठीक है, एपीआई एंडपॉइंट का नाम "debug_token" है, और इसे फेसबुक एपीआई प्रलेखन के एक हिस्से में वर्णित किया गया है जिसमें गेट्सिंग के बारे में जानकारी और डिबगिंग शामिल है । प्रलेखन के इस खंड को HTML एंकर #debug द्वारा संदर्भित किया गया है, और कहा गया है कि एपीआई उनके डिबग टूल का बैक-एंड है। मेरे लिए बहुत स्पष्ट लगता है, लेकिन आप सही कह रहे हैं कि तकनीकी रूप से, कहीं भी यह स्पष्ट रूप से और सीधे तौर पर कहा गया है कि उत्पादन के उपयोग के लिए फ़ंक्शन का इरादा नहीं है ... :-)
जोनाथन गिल्बर्ट

5
यहां मुख्य मुद्दा यह है कि मेरे लिए उपयोग करना; अगर क्लाइंट की तरफ से डेटा आ रहा है, तो एक्सेस_टोकन विधि सिर्फ सादा गलत है; चूँकि कोई भी साइट टोकन के लिए मछली पकड़ सकती है, तो अपनी एपीआई एक्सेस करके अपनी साइट में प्रमाणित करने के लिए उनका उपयोग करें।
srcspider

4
ओपी टोकन से जुड़ी यूजर आईडी की जांच करना चाहते थे। / मुझे endpoint यूजर आईडी दिखाए, लेकिन (क्योंकि सभी के बाद, टोकन निर्धारित करने के लिए प्रयोग किया जाता है पहुँच टोकन मान्य है ही अगर जो "मैं" वापस जाने के लिए)। तो, मुझे पकड़ो / और उपयोगकर्ता आईडी की तुलना करें। यह ध्यान में रखा जाना चाहिए कि प्रत्येक ऐप को विशेष रूप से स्कोप्ड यूजर आईडी मिलती है, इसलिए आप आईडी की तुलना किसी अन्य स्रोत से नहीं कर सकते / आप अपने स्वयं के ऐप के टोकन के साथ प्राप्त कर सकते हैं।
जोनाथन गिल्बर्ट

3
डॉक्स ने अतीत में डिबगिंग के लिए इसका उपयोग करते हुए संदर्भित किया हो सकता है। लेकिन वर्तमान में यह सुझाव देता है कि यह बिल्कुल उपयोग का मामला है।
एंडहाइबर्ग

78

आप बस अनुरोध कर सकते हैं https://graph.facebook.com/me?access_token=xxxxxxxxxxxxxxxxxxx यदि आपको कोई त्रुटि मिलती है, तो टोकन अमान्य है। यदि आपको आईडी प्रॉपर्टी के साथ JSON ऑब्जेक्ट मिलता है तो यह मान्य है।

दुर्भाग्य से यह केवल आपको बताएगा कि आपका टोकन वैध है, न कि यदि यह आपके ऐप से आया है।


9
क्षमा करें, मेरा प्रश्न स्पष्ट नहीं था। समस्या यह है कि केवल यूआईडी और एक्सेसटोकन के साथ उपयोगकर्ता को कैसे सत्यापित किया जाए। graph.facebook.com/100000726976284?access_token=xxxxxx उदाहरण के लिए, क्या उपयोगकर्ता 100000726976284 का एक्सेस टोकन xxxxxx है या नहीं, इसकी जांच करने का कोई सरल तरीका है। मुझे लगता है कि दर्ज 'सत्यापित' कुंजी है। केवल जब मैंने सही xxxxxx डाला, तो मैं प्रतिक्रिया में सत्यापित = सत्य देख सकता था।
तो जेई क्यूंग

14
अनुरोध graph.facebook.com/me?access_token=xxxxxxxxxxxxxxxxx जैसा कि ऊपर उल्लेख है, और फिर जाँच रखता है कि आप मैच आईडी अनुरोध से वापस पारित कर दिया।
एलेक्स क्यू

51
यह जांच नहीं करेगा कि access_token आपके ऐप के लिए है।
एड साइक्स 22

साथ ही expires_atजानकारी नहीं दे रहे हैं ।
विनेश

4
downvoting, @EdSykes से सहमत हैं, इस तरह से आप चेक नहीं कर सकते हैं कि क्या टोकन आपके ऐप डेवलपर्स से
।facebook.com

35

बस आपको यह बताने की इच्छा थी कि आज तक मैं पहली बार एक ऐप एक्सेस टोकन प्राप्त कर रहा था (फेसबुक के लिए जीईटी अनुरोध के माध्यम से), और फिर प्राप्त टोकन का उपयोग कर के रूप app-token-or-admin-tokenमें:

GET graph.facebook.com/debug_token?
    input_token={token-to-inspect}
    &access_token={app-token-or-admin-token}

हालाँकि, मुझे ऐसा करने का एक बेहतर तरीका पता चला (एक कम GET अनुरोध की आवश्यकता के अतिरिक्त लाभ के साथ):

GET graph.facebook.com/debug_token?
    input_token={token-to-inspect}
    &access_token={app_id}|{app_secret}

जैसा कि यहां एक्सेस टोकन के लिए फेसबुक के प्रलेखन में वर्णित है


6
धन्यवाद। दूसरों के लिए ध्यान दें: शाब्दिक "|" चरित्र को शामिल किया जाना चाहिए (जो कि 'या' को इंगित नहीं करता है) जैसा कि उत्तर में जुड़े पृष्ठ पर दिखाया गया है: Developers.facebook.com/docs/facebook-login/…
माइक एस

1
क्या यह असुरक्षित नहीं है? URL क्वेरी पैरामीटर्स के माध्यम से ऐप-सीक्रेट भेजना इसे आपके सर्वर और फ़ेसबुक और HTTPS के बीच "बीच में" किसी को भी उजागर नहीं करेगा, क्योंकि URL एन्क्रिप्टेड नहीं हैं। कोई भी केवल डीबग_टोकन फॉर्मेट में यूआरएल के साथ "सूँघने" (सूँघने) के अनुरोध को सुन सकता है और फेसबुक ऐप-सीक्रेट्स चुरा सकता है।
शिमोन

1
@Simeon stackoverflow.com/questions/499591/are-https-urls-encrypted यह काफी सुरक्षित है।
Xeing

@ धन्यवाद, मुझे लगता है कि मैं गलत धारणा के अधीन था :) ऐसा लगता है कि केवल URL का होस्ट हिस्सा एन्क्रिप्ट नहीं किया गया है।
शिमोन

1
जोड़ना '|' ऐप सीक्रेट के साथ मुझे आखिरकार मिल गया। अन्यथा यह एपीआई काम नहीं करता है।
उदय

4

बस अनुरोध (HTTP GET):

https://graph.facebook.com/USER_ID/access_token=xxxxxxxxxxxxxxxxx

बस।



1

(सर्वर साइड या क्लाइंट साइड) के Access Tokenलिए एक्सचेंजMobile Number and Country Code

आप इस https://graph.accountkit.com/v1.1/me/?access_token=xxxxxxxxxxxx के mobile numberसाथ अपने access_tokenसाथ प्राप्त कर सकते हैं । हो सकता है, आपके पास एक बार और , आप अपने साथ उपयोगकर्ता को सत्यापित करने के लिए इसके साथ काम कर सकते हैं । API mobile numberidserver & database

xxxxxxxxxx ऊपर है Access Token

उदाहरण प्रतिक्रिया:

{
   "id": "61940819992708",
   "phone": {
      "number": "+91XX82923912",
      "country_prefix": "91",
      "national_number": "XX82923912"
   }
}


(सर्वर साइड) के Auth Codeलिए एक्सचेंजAccess Token

यदि आपके पास एक Auth Codeजगह है, तो आप सबसे पहले इसके Access Tokenसाथ प्राप्त कर सकते हैं API- https://graph.accountkit.com/v1.1/access_token?grant_type=authorization_code&code=xxxxxxxxxx&access-token=AApgyyyyyyyyyyyypg.html

xxxxxxxxxx, yyyyyyyyyyऔर zzzzzzzzzzऊपर क्रमशः हैं Auth Code, App IDऔर App Secret

उदाहरण प्रतिक्रिया

{
   "id": "619XX819992708",
   "access_token": "EMAWdcsi711meGS2qQpNk4XBTwUBIDtqYAKoZBbBZAEZCZAXyWVbqvKUyKgDZBniZBFwKVyoVGHXnquCcikBqc9ROF2qAxLRrqBYAvXknwND3dhHU0iLZCRwBNHNlyQZD",
   "token_refresh_interval_sec": XX92000
}

टिप्पणी - यह पर पसंद किया जाता है server-sideके बाद से APIकी आवश्यकता है APP Secretजो होना नहीं है sharedके लिए security reasons

शुभ लाभ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.