2010-08-19 13 views
15

के साथ बाहरी लिंकिंग वर्तमान में मेरे पास फेसबुक टैब पर एक एप्लिकेशन है, और मुझे आश्चर्य है कि मेरे ऐप टैब पर किसी आइटम में गहरे लिंक के लिए कोई तरीका है या नहीं। उदाहरण:फेसबुक एप्लिकेशन टैब -> PHP

उपयोगकर्ता एप्लिकेशन (जो पुस्तकें खोज रहा है) में है, उन्हें एक पुस्तक मिलती है, और इसे किसी मित्र के साथ साझा करना चाहता है। वे इसे साझा करने के लिए क्लिक करते हैं, और मैं सभी जानकारी खींच सकता हूं, हालांकि मेरे पास गहरा लिंक नहीं है, इसलिए जब इसे ईमेल किया गया है, फेसबुक किया गया है, ect .. यह उपयोगकर्ता को इसके साथ सीधे पृष्ठ पर भेजता है।

क्या यह एप्लिकेशन टैब पर संभव है? मैं कैनवास पर जानता हूं कि मैं गहरा लिंक जुड़ा सकता हूं ... लेकिन ऐप टैब पर ऐसा करने का एक तरीका ढूंढ रहा हूं।

आपके विचार और प्रतिक्रियाओं के लिए धन्यवाद।

+0

नोट: फेसबुक लगातार पुन: आविष्कार कर रहा है कि वे सबकुछ कैसे करते हैं .. यह कैसे काम करता है इस पर नवीनतम उत्तर पोस्ट करने के लिए धन्यवाद। – Petrogad

उत्तर

24

यहां बताया गया है कि हमारे ऐप के पेज टैब के साथ हम उपपृष्ठों के गहरे लिंक कैसे हैं।

जब आपका एप्लिकेशन पृष्ठ टैब के अंदर रहता है, तो फेसबुक app_data को छोड़कर सभी जीईटी पैरा को हटा देगा। यह पोस्ट डेटा के signed_request पैरामीटर के अंदर app_data पास करता है।

डॉक्स में अधिक जानकारी: https://developers.facebook.com/docs/authentication/signed_request/

तो जब हम उप-पृष्ठों पर लिंक का निर्माण, यह कुछ की तरह

http://www.facebook.com/myfanpage?sk=app_XXXXXX&app_data=%2Fmainpage%2Fsubpage 

तो हमारे सूचकांक पेज कोड में, हम app_data परम के लिए जाँच दिखेगा।यदि यह मौजूद है, तो एक साधारण 302 रीडायरेक्ट चाल करता है।

$request = parse_signed_request($_POST['signed_request']); 
if ($request['app_data']) 
{ 
    header('HTTP/1.1 302 Found'); 
    header('Location: {$request['app_data']}'); 
    exit; 
} 

नोट: यदि आप app_data एक URL- एनकोडेड, JSON सरणी या ऐसा ही कुछ का उपयोग कर के अंदर 1 से अधिक परम पारित कर सकते हैं।

+0

इस पुराने प्रश्न पर उत्तर देने के लिए धन्यवाद; क्योंकि फेसबुक लगातार पुन: आविष्कार करता है कि वे चीजें कैसे कर रहे हैं; इसके माध्यम से काम करने की वर्तमान सर्वोत्तम विधि के साथ एक अद्यतन प्रतिक्रिया होना अच्छा लगता है। – Petrogad

3

शायद।

आवेदन कैनवास पेजेस के लिए, फेसबुक आपके कैनवास कॉलबैक में यूआरआई जानकारी को आगे बढ़ाता है।

उदाहरण के लिए, यदि आपके ऐप पेज http://apps.facebook.com/testapp

है और अपने कैनवास कॉलबैक http://facebook.example.com/testapp/canvas

फिर http://apps.facebook.com/testapp/foo?bar=baz के लिए जा रहा में फेसबुक के सर्वर तो http://facebook.example.com/testapp/canvas/foo?bar=baz आपके जैसे मार परिणाम होगा है।

मैंने कभी यह परीक्षण नहीं किया है कि एप्लिकेशन टैब इस व्यवहार को साझा करते हैं, लेकिन यह एक शॉट के लायक है। यदि ऐसा है, तो आप अपने डीप्लिंकिंग को चलाने के लिए केवल यूआरआई जानकारी का उपयोग कर सकते हैं।

इसके अलावा, आपको एप्लिकेशन टैब पर impending changes से अवगत होना चाहिए।

+0

मैं पहले कभी 'प्रमुख मंच' के साथ और अधिक निराश विकास नहीं कर रहा हूं .. ऐसा लगता है कि मैंने शुरू होने के बाद 9 बार गियर बदल दिए हैं। फेसबुक एपीआई के विकास में इतने बड़े, अभी तक अविश्वसनीय बेवकूफ कैसे हो सकता है .. आपकी टिप्पणी के लिए धन्यवाद, मैं इसे एक परीक्षा दूंगा और आपको बता दूंगा। चीयर्स! – Petrogad

+0

यह काम नहीं करता है:/हालांकि उत्तर के लिए धन्यवाद, क्योंकि यह मुझे यह देखने के लिए प्रेरित करता है कि मैं कम से कम ऐप टैब से कैसे लिंक कर सकता हूं। पैरामीटर के साथ गहरे लिंक को कैसे ढूंढें, यह जानने के लिए अभी भी संघर्ष कर रहा है। – Petrogad

1

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

हम (जैसे http://apps.facebook.com/testapp/foo?bar=bar)

यह एक ऐप पर नहीं काम टैब (जैसे http://www.facebook.com/testpage?v=app_1234&bar=bar)

इसी तरह, हम $_GET['foo'] करने के लिए उपयोग नहीं किया जा सकता है एक आवेदन पेज से विंडो स्थान में जानकारी प्राप्त करने में सक्षम हैं यदि हम एक फेसबुक टैब में हैं तो इसे सर्वर-साइड को पकड़ने का प्रयास करें।

यदि कोई इस के आसपास पहुंचने में कामयाब रहा है, तो मुझे समाधान जानना अच्छा लगेगा।

+0

ऊपर देखें - आपको फेसबुक द्वारा प्रदान किए गए 'app_data' पैरामीटर का उपयोग करना होगा। –

2

उन लोगों के लिए जिन्हें पूर्ण (अभी तक न्यूनतम काम करने वाला) उदाहरण (स्वयं की तरह) की आवश्यकता है, index.php है जो आवश्यक होने पर गहरी लिंकिंग करता है। सुनिश्चित करें कि आपने Facebook PHP SDK डाउनलोड किया है और यह कि आपके require पथ बिंदु हैं।

<?php 
require 'facebook-php-sdk/src/facebook.php'; 

$app_id  = "YOUR_APP_ID_HERE"; 
$app_secret = "YOUR_APP_SECRET_ID_HERE"; 

$facebook = new Facebook(array(
    'appId' => $app_id, 
    'secret' => $app_secret 
)); 

$signed_request = $facebook->getSignedRequest(); 

// Get app_data from signed request POST 
$app_data = $signed_request["app_data"]; 

// Parse app_data & Re-direct 
if ($app_data) { 
    header("HTTP/1.1 302 Found"); 
    header("Location: {$app_data}"); 
exit; 
} 

?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns:fb="http://www.facebook.com/2008/fbml" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>Title Here</title> 
</head> 
<body> 
    <h1>Landing Page</h1> 
</body> 
</html> 

इसके अलावा, यह सुनिश्चित कर लें (जाहिर है, आप भी अपनी खुद की ऐप्स की जानकारी के साथ $app_id और $app_secret को बदलने के लिए की जरूरत है।) है कि अपने अमेरिकन प्लान एप्लिकेशन सेटिंग के भीतर, अपने सभी URL पथ (यानी कैनवास URL, पृष्ठ टैब यूआरएल, आदि) बैकस्लैश के साथ समाप्त होता है, अन्यथा आपको कुछ 301 रीडायरेक्ट त्रुटियां मिलेंगी।

अपने अनुप्रयोग सेटअप है और आप added it your fan page है, आप कर सकते हैं की तरह कुछ के साथ गहरे लिंक:

http://www.facebook.com/pages/MYFANPAGE/XXXXX?sk=app_XXXXX&app_data=sub/another.php 

आप इसे उपयोग करने से पहले वास्तविक App_Data मान पार्स करने में हो सकता है, लेकिन मेरे लिए यह सिर्फ के रूप में काम ऊपर।

उम्मीद है कि दूसरों को वहां मदद करता है। बेशक, फेसबुक किसी भी समय यह सब बदल सकता है।

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