2011-04-14 9 views
7

मुझे पता है कि यह ग्राफ एपीआई से पहले संभव था।आईओएस: प्राधिकरण के लिए ऐप छोड़ दिए बिना फेसबुक से कनेक्ट करें

मैं एक आईफोन ऐप पर काम करता हूं जो पृष्ठभूमि में नहीं हो सकता है (आवश्यकताओं में से एक)।
इसके अलावा ऐप लॉन्चिंग पर एक लॉगिन स्क्रीन भी है।
इसलिए फेसबुक पर प्रमाणीकृत करने के लिए पृष्ठभूमि में जाने के लिए उपयुक्त नहीं है और फिर ऐप पर वापस आएं और प्रत्येक बार जब उपयोगकर्ता कुछ साझा करना चाहता है तो लॉगिन करें।

तो, मेरा सवाल यह है कि ऐप छोड़ दिए बिना फेसबुक के साथ प्रमाणित करने का कोई तरीका है।

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

किसी भी विचार की सराहना की जाएगी।

अग्रिम धन्यवाद।

-
माइकल।

उत्तर

8

Facebook.m

में
- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth 
        safariAuth:(BOOL)trySafariAuth { 
    NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           _appId, @"client_id", 
           @"user_agent", @"type", 
           kRedirectURL, @"redirect_uri", 
           @"touch", @"display", 
           kSDKVersion, @"sdk", 
           nil]; 

विधि टिप्पणी बाहर इस

UIDevice *device = [UIDevice currentDevice]; 
    if ([device respondsToSelector:@selector(isMultitaskingSupported)] && [device isMultitaskingSupported]) { 
    if (tryFBAppAuth) { 
     NSString *fbAppUrl = [FBRequest serializeURL:kFBAppAuthURL params:params]; 
     didOpenOtherApp = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:fbAppUrl]]; 
    } 

    if (trySafariAuth && !didOpenOtherApp) { 
     NSString *nextUrl = [NSString stringWithFormat:@"fb%@://authorize", _appId]; 
     [params setValue:nextUrl forKey:@"redirect_uri"]; 

     NSString *fbAppUrl = [FBRequest serializeURL:loginDialogURL params:params]; 
     didOpenOtherApp = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:fbAppUrl]]; 
    } 
    } 

इस पृष्ठभूमि में जाने से रोकने के लिए और एप्लिकेशन आप मानक अमेरिकन प्लान संवाद दिखाई देगा।

+0

धन्यवाद। महान समाधान –

+0

मुझसे भी आपका धन्यवाद - एक ग्राहक एकल-साइन ऑन के बजाय इसके लिए बेताब था और उसने मुझे बहुत काम बचाया। क्या आप पुष्टि कर सकते हैं कि फेसबुक के बाद ओयूथ 1 और पुराने एसडीके के लिए समर्थन हटाए जाने के बाद यह काम जारी रहेगा? –

+0

मुझे लगता है कि इसे काम करना चाहिए, लेकिन मैं सलाह दूंगा कि यदि आप एफबी के साथ कुछ करते हैं तो आप ऐप अपडेट कर सकते हैं। –

6

यहां आपके पास एक वैकल्पिक समाधान है।

आप फेसबुक एसडीके कोड बदल सकते हैं और एक समाधान आप एसएसओ या पुराने जमाने तंत्र के बीच चयन करने की अनुमति देता है कि चाहते पसंद नहीं करते हैं, तो आप इस तरह एक विस्तार को लागू कर सकते हैं:

//Facebook_SSOExtension.h 
-------------------------------------------------------- 

@interface Facebook(SSOExtension) 
-(void) authorize:(NSArray*)permissions useSSO:(BOOL) useSSO; 
@end 

//Facebook_SSOExtension.m 
-------------------------------------------------------- 

//So warnings do not appear 
@interface Facebook(PrivateSSOExtension) 
- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth 
        safariAuth:(BOOL)trySafariAuth; 
-(void) setPermissions:(NSArray*) permissions; 
@end 

@implementation Facebook(SSOExtension) 
-(void) authorize:(NSArray*)permissions useSSO:(BOOL) useSSO 
{ 
    [self setPermissions: permissions]; 
    [self authorizeWithFBAppAuth:useSSO safariAuth:useSSO]; 
} 
@end 

भी हालांकि इसे एसएसओ कोड पर टिप्पणी करने से अधिक काम की आवश्यकता है, आप बिना किसी बड़ी समस्या के फेसबुक-एसडीके अपडेट कर पाएंगे (अगर वे प्राधिकरण का नाम बदलते हैं WithFBAppAuth: safariAuth: आपका एक्सटेंशन काम नहीं करेगा, इस समस्या को जल्दी से पहचानने के लिए आवेषण का उपयोग करें)। साथ ही, यदि आप बार-बार चीजों को दोहराए बिना फेसबुक के साथ बातचीत करने के लिए एक पुन: प्रयोज्य घटक बना रहे हैं, तो यह आपको कुछ काम भी बचाएगा।

चीयर्स।

+0

वहां पर अच्छा बिंदु :) –

+0

वर्तमान में - सेट पैरामिशन एक क्रैश का कारण बनता है। [फेसबुक सेट पैरामिशन:]: अपरिचित चयनकर्ता –

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