2012-03-01 22 views
7

मुझे प्रमाणीकरण साझा करने के लिए एक वेबसाइट (डेविस और ओमनीथ के साथ रेल 3.1) और एक मोबाइल एप्लिकेशन (आईओएस 5) चाहिए। इसका मतलब है कि मैं चाहता हूं कि कोई उपयोगकर्ता फेसबुक के साथ साइट पर एसएसआई, या एसएसआई मोबाइल एप्लिकेशन पर सक्षम हो और मोबाइल एप्लिकेशन को वेबसाइट के प्रमाणीकरण के लिए उपयोगकर्ता के क्रेडेंशियल्स का उपयोग करके वेबसाइट के एपीआई पर बात कर सके।वेबसाइट और मोबाइल एप्लिकेशन के बीच साझा फेसबुक एक्सेस टोकन

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

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

वेब/रेल टोकन (वास्तविक नहीं):

DDDAKnu1dg40BDHEWN0VDssxs8GGF8ZBEEOb38HnS0IUEQC1NSufmPCcGeFkTuw39ZDl7OhlZBD2jwJEqXdAZCtZBflJRQKZB4ZA

मोबाइल/iOS टोकन (वास्तविक नहीं)

BDDAKnu1dg40BDEo3YjZD2hIwjfZB4slXJj3fmHfzLh5q1xZD0ShfJCb6PMjnApkpM0FTuGGvWnzZBQy4GZCMuysEEqhMz8YgruD53TXKTZC0GPFkfVe0b6fe8wieLLOZDDZA

का उपयोग करते हुए फेसबुक के access token debugger मैं निम्नलिखित (सब कुछ हटा दिया टोकन के बीच समान है) मिलता है:

वेब के लिए/रेल टोकन:

App ID: 
XXXXXXXXXXXXXXXX : SomeAppName 
User ID:  
XXXXXXXX : My Name 
Issued: 
1327507734 : 8:08 am Jan 25 2012 
Expires:  
Never 
Valid: True 
Origin: Web 
Scopes: email offline_access 

मोबाइल/आईओएस के लिए:

App ID: 
XXXXXXXXXXXXXXXX : SomeAppName 
Metadata: {"sso":"iphone-safari"} 
User ID:  
XXXXXXXX : My Name 
Issued: 
1327507734 : 8:08 am Jan 25 2012 
Expires:  
Never 
Valid: True 
Origin: Native Mobile 
Scopes: email offline_access 
+0

हैलो। क्या आपको इस समस्या का समाधान मिला? मुझे अभी एक ही समस्या का सामना करना पड़ रहा है ... – alex

+1

हाय। नहीं दुर्भाग्य से नहीं। अजीब दिया गया कि यह काफी आम आवश्यकता प्रतीत होता है। लंबे समय से देखा गया लेकिन कुछ भी उपयोगी नहीं मिला। किसी और चीज पर चले गए लेकिन जल्द ही इसे हल करना होगा। – Undistraction

+0

मेरे आवेदन में बहुत सख्त सुरक्षा आवश्यकताएं नहीं हैं, लेकिन, हम जो कुछ भी करते हैं, वह आसानी से फेसबुक के साथ प्रत्येक उपयोगकर्ता टोकन से जुड़े उपयोगकर्ता आईडी को – JeffS

उत्तर

1

आपको फेसबुक एपीआई में छोटे बदलाव करना है, प्राधिकरण में,

से बदलें
[self authorizeWithFBAppAuth:YES safariAuth:YES]; 

[self authorizeWithFBAppAuth:NO safariAuth:NO]; 

क्योंकि somethimes टोकन के साथ समस्या यह है कि जब आप fbApp या सफारी द्वारा प्रमाणन के लिए चाहते करने के लिए। मुझे यह वही समस्या थी, इस वजह से मेरी वेब सेवाओं में टोकन अलग था।

4

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

+0

मेरे पास अब भी यही प्रश्न है। मुझे आपका जवाब समझ में नहीं आया - यदि ऐप और वेब से लॉगिन के लिए टोकन समान नहीं है - तो आप इसे कैसे मान्य करते हैं? आइए ऐप से लॉग इन करें - वेब कॉल में आप इसका उपयोग कैसे करते हैं? – Dejell

0

इसे हल करने का एक संभावित तरीका मोबाइल पर फेसबुक के माध्यम से प्रमाणीकृत करना है, फिर एक एन्क्रिप्टेड f_uid को रेल ऐप पर भेज दें जो फिर f_uid को डिक्रिप्ट करेगा और देखें कि वास्तव में सर्वर में कौन लॉग इन कर रहा है।

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