2011-01-24 14 views
10

क्या ऐप के भीतर प्रमाणित करने के लिए फेसबुक आईओएस एसडीके का उपयोग करना संभव है (सफारी पर नहीं जाएं), और ऐप के अगले लॉन्च के लिए उन प्रमाणीकरण प्रमाण-पत्रों को भी रखें?आईफोन/आईओएस फेसबुक एसडीके - क्या आप ऐप के अंदर लॉग इन कर सकते हैं, और लॉगिन क्रेडेंशियल रख सकते हैं?

जब मैं सिम्युलेटर में डेमो ऐप का उपयोग करने का प्रयास करता हूं, तो यह हमेशा प्रमाणित करने के लिए सफारी में जाता है, जो थोड़ा सा क्रैपी लगता है। और फिर, जब मैं प्रमाणीकृत करता हूं ... अगर मैं पूरी तरह से ऐप को मारता हूं तो यह फिर से प्रमाणित करने के लिए कहेंगे (और फिर मुझे बताएं कि मैं पहले से ही लॉग इन हूं)

क्या कोई तरीका है, केवल उपयोगकर्ता को केवल एक ईमेल के साथ प्रस्तुत करना फ़ील्ड और पासवर्ड फ़ील्ड और फिर उस जानकारी को रखें .. ऐप के भीतर?

+1

क्या आप सफारी लॉन्च करने के बजाय वेबव्यू का उपयोग नहीं कर सकते? –

+0

यकीन है, लेकिन यह शौकिया दिखता है। मैं आदर्श रूप से सिर्फ ईमेल और पासवर्ड फ़ील्ड चाहता हूं – cannyboy

+1

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

उत्तर

9

इस प्रश्न को देखें और उत्तर दें: Iphone facebook connect example calls safari. I don't want to use safari। साथ ही, आप NSUserDefaults में प्रमाणीकरण सामग्री को स्टोर करना चाहते हैं और पुनः लॉग इन रोकने के लिए उन्हें जांचें।

संपादित कुछ नमूना कोड:

[[NSUserDefaults standardUserDefaults] setObject:_facebook.accessToken forKey:@"AccessToken"]; 
[[NSUserDefaults standardUserDefaults] setObject:_facebook.expirationDate forKey:@"ExpirationDate"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

लॉगिन सामान के लिए जाँच करने के लिए:

_facebook = [[[Facebook alloc] initWithAppId:@"[app_id]"] retain]; 
_facebook.accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"]; 
_facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"]; 
if (![_facebook isSessionValid]) { 
    [_facebook authorize:_permissions delegate:self]; 
} 
else { 
    [_facebook requestWithGraphPath:@"me" andDelegate:self]; 
} 
+0

मैं nsuserdefaults का उपयोग करने की कोशिश करूंगा। uiwebview का उपयोग करने के लिए, यह थोड़ा बेकार लगता है। मैं ईमेल और पासवर्ड uitextfields रखने और जावास्क्रिप्ट के साथ इन्हें अदृश्य uiwebview में इंजेक्ट करने का प्रयास कर सकता हूं, और जावास्क्रिप्ट के साथ पुष्टिकरण बटन पर भी क्लिक कर – cannyboy

+1

मैंने कुछ और नमूना कोड जोड़ा। जैसा कि यह बेकार दिख रहा है ..हालांकि मैं आपसे सहमत हूं कि फेसबुक का कार्यान्वयन बेहतर और कम "बेकार" दिखता है, मैं कहूंगा कि 'UIWebView' का उपयोग पूरी तरह से स्वीकार्य है और (अब) फेसबुक लॉगिन के लिए अपेक्षित है। आईएमएचओ, मैं इसके बारे में ज्यादा चिंता नहीं करता ... – donkim

5

आप दौर यह इस करता है, तो इसे रोकने के लिए हैक कर सकते हैं

लॉगिन सामान को बचाने के लिए वही है जो आप वास्तव में चाहते हैं, पुराने फेसबुक कनेक्ट एपीआई से माइग्रेट करने वाले अधिकांश अन्य ऐप्स को ध्यान में रखते हुए नए तरीके से व्यवहार करेंगे

facebook.m में निम्न विधि

- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth 
        safariAuth:(BOOL)trySafariAuth 

लगता है didOpenOtherApp तर्क के नीचे खोजने के लिए और यह सब से ऊपर बाहर टिप्पणी इतना है कि यह हमेशा इनलाइन और tuns खोलता कोड के इस खंड! DidOpenOtherApp में निहित thats ऐसा करने से धनुकोष्ठक

// If single sign-on failed, open an inline login dialog. This will require the user to 
    // enter his or her credentials. 
    if (!didOpenOtherApp) { 
    [_loginDialog release]; 
    _loginDialog = [[FBLoginDialog alloc] initWithURL:loginDialogURL 
              loginParams:params 
              delegate:self]; 
    [_loginDialog show]; 
    } 

लेकिन अगर आप यह अधिक संभावना कर रहे हैं उपयोगकर्ता इनपुट के अपने क्रेडेंशियल्स है, जो तेजी से अनुप्रयोग स्विचिंग दृष्टिकोण के साथ डाल से निश्चित रूप से भी बदतर है होगा?

3

जब आप पहली बार ऑथ करते हैं, तो सुनिश्चित करें कि आप "ऑफ़लाइन_एसीसी" अनुमति मांग रहे हैं। यह उस टोकन को बनाएगा जो OAuth आपको वापस लौटाता है सत्र के अंत में अमान्य नहीं किया जाता है, बल्कि जब तक वे साथ नहीं आते हैं और फेसबुक के बाहर अपने ऐप को लॉग इन करने के लिए एपीआई का उपयोग करते हैं तो वैध रूप से वैध रहें।

फिर, जाहिर है, आपको टोकन को सहेजने की आवश्यकता है (मुझे लगता है कि NSUserDefaults इसके लिए एक अच्छी जगह है) और बाद में एफबी इंटरैक्शन पर इसका पुन: उपयोग करें।

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

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