पर फेसबुक के एफबीसी कनेक्ट कनेक्ट एसडीके मुद्दे मैं अपने आवेदन के माध्यम से किसी उपयोगकर्ता की प्रोफ़ाइल में पोस्ट प्रकाशित करने के लिए एफबीसी कनेक्ट कनेक्ट एसडीके का उपयोग कर रहा हूं। मुझे इसके साथ कई समस्याएं आ रही हैं:आईओएस
जब प्रासंगिक कोड डिवाइस पर पहली बार चलता है, तो उपयोगकर्ता को फेसबुक ऐप/वेबसाइट पर वांछित, फिर से निर्देशित किया जाता है, जो उसे अधिकृत करने के लिए कहता है यह। यदि उपयोगकर्ता इसे अधिकृत करता है, तो यह उस एप्लिकेशन पर वापस लौटाता है, जो "फेसबुक से कनेक्ट करें" दृश्य नियंत्रक को पॉप करता है जो उपयोगकर्ता को लॉग इन करने के लिए कहता है। यह अजीब है, क्योंकि उपयोगकर्ता पहले ही लॉग इन है, अन्यथा वह ऐप को कैसे अधिकृत कर सकता है ? लेकिन मुझे लगता है कि यह ठीक हो सकता है, के रूप में वह अभी तक एप्लिकेशन के माध्यम से लॉग इन नहीं किया था। लॉग इन करने के बाद, यह कुछ भी नहीं करता है। ऐप को अधिकृत करने के बाद कोड को चलाने के लिए दूसरी बार, उपयोगकर्ता को पोस्टिंग संवाद मिलता है।
यदि उपयोगकर्ता ने ऐप को अधिकृत नहीं किया है, तो जब यह प्राधिकरण संवाद के बाद मेरे ऐप पर वापस आता है, तो यह उपयोगकर्ता से लॉगिन करने के लिए कहता है (जैसे वह अधिकृत है), और लॉग इन करने के बाद कुछ भी नहीं करता है। केवल दूसरी बार कोड भाग गया हो जाता है, प्राधिकरण संवाद खोलता है, optinos साथ & "App छोड़ें", के बजाय "अधिकृत करें" & "अधिकृत नहीं है"/"अनुमति दें" & "की अनुमति न दें" "अधिकृत करें"।
इसके अतिरिक्त, यदि उपयोगकर्ता ने फेसबुक पर अपने खाते की सेटिंग्स के माध्यम से अपना प्राधिकरण हटा दिया है, तो उसे सिर्फ इसे फिर से अधिकृत करने के लिए कहने के बजाय, एक फेसबुक संवाद पॉप (पोस्ट/प्राधिकरण संवाद के बजाय) कहता है: "एन त्रुटि आई। कृपया बाद में पुनः प्रयास करें। " बाद में कोशिश करने में मदद नहीं करता है। यह हमेशा पॉप होगा, भले ही आप ऐप को पुनरारंभ करें। इसे दूर करने का एकमात्र तरीका ऐप को दोबारा स्थापित करना है, जिससे इसे प्राधिकरण संवाद को दोबारा पॉप-अप कर दिया जाएगा। उपयोगकर्ता एप्लिकेशन अधिकृत करता है
- के बाद, वह फिर से लॉग इन करने की जरूरत नहीं होगी:
तो यहाँ मैं क्या हासिल करना चाहते हैं। - उपयोगकर्ता एप्लिकेशन अधिकृत करता है के बाद पोस्टिंग डायलॉग, immedietly पॉप जाएगा उसके बिना (एक बटन के साथ है, जो शुरू हो रहा है, Btw) कोड को फिर से चलाने के लिए हो रही है।
- एप्लिकेशन को उपयोगकर्ता अन-अधिकृत करता है, तो वह फिर से प्राधिकरण संवाद के साथ, संवाद
- त्रुटि के बजाय अगर वह प्राधिकरण से इनकार कर दिया प्रेरित किया जाएगा, मैं एक समारोह है कि एक त्रुटि प्रदर्शित करता है/आदि कॉल करेंगे।
यहाँ प्रासंगिक कोड है:
MyViewController.m
- (void)shareOnFacebook
{
Facebook *facebook = [[Facebook alloc] initWithAppId:myAppID];
[(MyAppDelegate *)[[UIApplication sharedApplication] delegate] setFacebook:facebook];
[facebook release];
facebook = [(MyAppDelegate *)[[UIApplication sharedApplication] delegate] facebook];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) {
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
if (![facebook isSessionValid]) {
[facebook authorize:[NSArray arrayWithObjects:@"publish_stream", nil] delegate:(MyAppDelegate *)[[UIApplication sharedApplication] delegate]];
}
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
//Giving the dictionary some parameters for posting defaults
[facebook dialog:@"feed" andParams:dictionary andDelegate:self]; //Note: we have 2 different delegates! appDelegate for connections & url switching, and self for dialogs
}
MyAppDelegate.h
@interface MyAppDelegate : NSObject <UIApplicationDelegate, FBSessionDelegate, FBDialogDelegate>
{
Facebook *facebook; // kept for facebook sharing, accessed only from MyViewController although delegate methods are handeled in here
}
@property (nonatomic, retain) Facebook *facebook;
@end
MyAppDelegate.m
- (void)fbDidLogin
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [self.facebook handleOpenURL:url];
}
क्या यह संभव है कि मैं MyViewController पर कुछ प्रतिनिधि कार्यों को याद कर रहा हूं? क्योंकि मैं किसी कारण से देखता हूं, मैंने इसे FBDialogDelegate प्रोटोकॉल को कार्यान्वित करने के रूप में चिह्नित किया है, हालांकि वह वहां से किसी भी फ़ंक्शन को लागू नहीं करता है।
अगर आप मेरी मदद करेंगे तो मैं वास्तव में खुश रहूंगा, क्योंकि यह मेरे लिए बेहद निराशाजनक है। मुझे इंटरनेट पर इसके बारे में कुछ भी नहीं मिला, और मुझे लगता है कि मैं यहां डूब रहा हूं।
अग्रिम में टीएनएक्स!
शायद यह आपके प्रश्न का उत्तर नहीं है, लेकिन ऐसा लगता है कि आपके पास एक समस्या है जो फेसबुक इंस्टेंस है जो हर शेयर पर पुनर्निर्मित है। प्रलेखन से ऐसा लगता है कि फेसबुक इंस्टेंस को आम तौर पर ऐपडिलेगेट में जोड़ा जाता है और ऐप चलने पर कभी भी असाइन नहीं किया जाता है। शायद इस कोड को मैंने जिस परियोजना पर काम कर रहा है, उसके लिए लिखा है, यह आपके मुद्दों को हल करना आसान हो सकता है (यह अभी तक सही नहीं है, लेकिन जहां तक शेयरिंग संबंधित है, ठीक काम करता है): http://stackoverflow.com/प्रश्न/7085162/फेसबुक-कनेक्ट-क्लास-सिंगलटन-एक्सेस-टोकन-इश्यू/7085809 # 7085809 –