2012-09-21 12 views
5

के रूप में माउंटेन शेर अब सरकारी तौर पर फेसबुक मैं Accounts.framework और ओएस एक्सपहुँच फेसबुक खातों

मैं फेसबुक डेवलपर अनुप्रयोग और इस्तेमाल में किसी एप्लिकेशन की स्थापना की Social.framework साथ एक छोटा सा खेलना चाहते थे एकीकृत किया गया है निम्नलिखित कोड का फेसबुक खाते उपयोगकर्ता में लॉग इन पर पहुंच के लिए:

ACAccountStore *acStore = [[ACAccountStore alloc] init]; 
ACAccountType *accType = [acStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:FB_APP_ID, ACFacebookAppIdKey, @"read_stream, publish_stream", ACFacebookPermissionsKey, ACFacebookAudienceFriends, ACFacebookAudienceKey, nil]; 


[acStore requestAccessToAccountsWithType:accType options:options completion:^(BOOL granted, NSError *error) { 
    if (granted) { 
     NSLog(@"Accounts: %@", acStore.accounts); 
     NSLog(@"Access granted"); 
    } else { 
     NSLog(@"Access denied"); 
    } 
}]; 

अब मैं हमेशा त्रुटि Error Domain=XPCObjectsErrorDomain Code=2 "The operation couldn’t be completed. (XPCObjectsErrorDomain error 2.)"

जब मैं Xcode ओर से एप्लिकेशन का शुभारंभ पहले 2-3 बार मिलता है, ओएस एक्स पुष्टिकरण संवाद प्रदर्शित करता है "XYZ आपके फेसबुक खातों तक पहुंचना चाहता है", मैंने ठीक क्लिक किया और मुझे कुछ ऐसा कहने में त्रुटि मिली "एप्लिकेशन अभी तक इंस्टॉल नहीं है"। यह त्रुटि अब "गायब हो गई है" और मुझे उपरोक्त त्रुटि मिल रही है।

मेरा प्रश्न है: क्या मुझे अपने एक्सकोड प्रोजेक्ट (इन्फो.प्लिस्ट) में या फेसबुक डेवलपर ऐप में कुछ विशेष रूप से ओएस एक्स के साथ काम करने के लिए कॉन्फ़िगर करना है? या क्या मुझे कोड में कुछ याद आ रहा है? इसके बारे में नमूने और ट्यूटोरियल बहुत दुर्लभ प्रतीत होते हैं: -/

मैंने पहले ही डब्लूडब्लूडीसी 2012 वीडियो को ट्विटर/फेसबुक एकीकरण के बारे में देखा है, लेकिन यह लगभग उसी कोड का उपयोग करता है जिसका मैंने उपयोग किया था।

किसी भी मदद की, :-)

चीयर्स सराहना की ब्योर्न

अद्यतन
मैं समस्या हल हो जाती, मैं सिर्फ डॉक्स ध्यान से काफी पढ़ा नहीं था ;-) मैं पास करना एनएसएआरएआरई के रूप में अनुमतियां और एक स्ट्रिंग के रूप में नहीं।

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: FB_APP_ID, ACFacebookAppIdKey, [NSArray arrayWithObjects:@"read_stream", @"publish_stream", @"email", @"user_likes", nil], ACFacebookPermissionsKey, ACFacebookAudienceFriends, ACFacebookAudienceKey, nil];

अब ओएस एक्स एक चेतावनी है कि मुझे पूछता है कि मैं अनुप्रयोग मेरी ओर से फेसबुक पर पोस्ट करने के लिए अनुमति देना चाहते हैं पता चलता है, मैं ठीक क्लिक करें और एक: मैं विकल्पों शब्दकोश इस तरह देखने के लिए संशोधित किया नए त्रुटि फेसबुक खातों के लिए पहुँच नहीं है, जिसके परिणामस्वरूप प्रकट होता है:

Error Domain=com.apple.accounts Code=7 "The Facebook server could not fulfill this access request: The app must ask for a basic read permission at install time."

मैं पहले से ही अनुमतियों को संशोधित सिर्फ email या सिर्फ user_likes लेकिन यह सब एक ही गलती के परिणामस्वरूप किया जाना है। मैं केवल read_stream के लिए उपयोग का अनुरोध करते हैं पहुंचने की अनुमति दी जाती है लेकिन संदेश Error validating access token: User XXXXXX has not authorized application XXXXXX.

अद्यतन के साथ OAuth त्रुटि 190 में परिणाम 2:
अब मैं अपने सभी समस्याओं को हल, मेरा उत्तर नीचे देखें।

उत्तर

11

ठीक है, मैं अंत में यह :-)

हल जब आप एक उपयोगकर्ता फेसबुक खातों के लिए पहला अनुरोध का उपयोग, आप कर सकते हैं फेसबुक के अनुमति संदर्भ में "User and Friend permissions" के तहत सूचीबद्ध उपयोगकर्ता से केवल अनुरोध अनुमतियाँ।

एक बार जब उपयोगकर्ता ने पहुंच प्रदान की और उसके साथ फेसबुक पर भी एप्लिकेशन इंस्टॉल किया, तो आप अपने ऐप द्वारा आवश्यक अतिरिक्त अनुमतियों का अनुरोध कर सकते हैं। यह महत्वपूर्ण है कि आप पढ़ सकते हैं और एक ही समय में एक ही समय में अनुमतियां लिखने के लिए पूछें!तो उसी अनुरोध में अनुमति read_stream और publish_stream की अनुमति नहीं देगी।

self.store = [[ACAccountStore alloc] init]; 

ACAccountType *accType = [self.store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

NSMutableDictionary *options = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
            FB_APP_ID, ACFacebookAppIdKey, 
            [NSArray arrayWithObjects:@"email", @"user_about_me", @"user_likes", nil], ACFacebookPermissionsKey, ACFacebookAudienceFriends, ACFacebookAudienceKey, nil];  

[self.store requestAccessToAccountsWithType:accType options:options completion:^(BOOL granted, NSError *error) { 
    if (granted && error == nil) { 
     self.accounts = self.store.accounts;  
     [options setObject:[NSArray arrayWithObjects:@"read_stream, read_mailbox, read_requests", nil] forKey:ACFacebookPermissionsKey]; 
     [self.store requestAccessToAccountsWithType:accType options:options completion:^(BOOL granted, NSError *error) { 
      if (granted && error == nil) { 
       completionHandler(granted, error); 
      } else { 
       NSLog(@"Access denied 2"); 
       NSLog(@"%@", [error description]); 
      } 
     }]; 
    } else { 
     NSLog(@"Error: %@", [error description]); 
     NSLog(@"Access denied"); 
    } 
}]; 

आशा इस में मदद मिलेगी किसी :-)

+0

हाय, क्या आप मेरे प्रश्न का उत्तर दे सकते हैं? http://stackoverflow.com/questions/12644229/ios-6-facebook-posting-procedure-ends-up-with-permissions-alert-view – Stas

+0

हालांकि मैंने यहां जो भी पोस्ट किया है, मैंने कोशिश की - मेरा मतलब है कि विभिन्न प्रकार की अनुमतियां .. परिणाम एक जैसा है :( – Stas

+1

अच्छा डूड अच्छी तरह से किया गया! .. यह भी मुझे बहुत मदद मिली – Warewolf

2

मैं जोड़ने के लिए फेसबुक डॉक्स में एक अतिरिक्त चेतावनी है कि वहाँ चाहते हैं:

यह मूलतः कोड मैं प्रयोग किया जाता है

// if a user has *never* logged into your app, you MUST include one of 
// "email", "user_location", or "user_birthday". Other read 
// permissions can also be included here. 

ऐसा करने में विफलता एक ही त्रुटि की ओर ले जाती है।

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