मैं हाल ही में फेसबुक एसडीके 3.1 का उपयोग शुरू कर दिया है, और openActiveSessionWithReadPermissions
का उपयोग करने में प्रवेश के साथ कुछ समस्याओं का सामना कर रहा हूँ।openActiveSessionWithReadPermissions में लॉग इन नहीं है स्वचालित रूप से
वास्तव में, पूरी तरह से काम करता है में loggin, अगर वहाँ एक कैश्ड टोकन उपलब्ध है, यह में फेसबुक यूआई पेश बिना लॉग करता है, और यदि नहीं, तो यह यूआई प्रस्तुत करता है। मैं reauthorizeWithPublishPermissions
के लिए एक कॉल करने के बाद
समस्या होती है। अगर मैं reauthorizeWithPublishPermissions
, तो पास फोन और आवेदन फिर से खोलना, और openActiveSessionWithReadPermissions
को एक फोन करना है, यह फेसबुक यूआई प्रस्तुत करता है और कहने के लिए "हाँ मुझे पढ़ने अनुमतियों के साथ ठीक हूँ", भले ही कोई संचित टोकन उपलब्ध है उपयोगकर्ता की आवश्यकता है।
यह केवल फेसबुक यूआई ग़लती से प्रस्तुत करता है अगर मैं reauthorizeWithPublishPermissions
को एक फोन करना है, अन्यथा सब कुछ ठीक काम करता है।
पढ़ने कोड के लिए खुला:
[FBSession openActiveSessionWithReadPermissions:readpermissions allowLoginUI:YES
completionHandler:^(FBSession *aSession, FBSessionState status, NSError *error) {
[self sessionStateChanged:[FBSession activeSession] state:status error:error];
if (status != FBSessionStateOpenTokenExtended) {
// and here we make sure to update our UX according to the new session state
FBRequest *me = [[FBRequest alloc] initWithSession:aSession
graphPath:@"me"];
[me startWithCompletionHandler:^(FBRequestConnection *connection,
NSDictionary<FBGraphUser> *aUser,
NSError *error) {
self.user = aUser;
aCompletionBlock(aSession, status, error);
}];
}
}];
sessionStateChanged समारोह:
- (void)sessionStateChanged:(FBSession *)aSession state:(FBSessionState)state error:(NSError *)error {
if (aSession.isOpen) {
// Initiate a Facebook instance and properties
if (nil == self.facebook || state == FBSessionStateOpenTokenExtended) {
self.facebook = [[Facebook alloc]
initWithAppId:FBSession.activeSession.appID
andDelegate:nil];
// Store the Facebook session information
self.facebook.accessToken = FBSession.activeSession.accessToken;
self.facebook.expirationDate = FBSession.activeSession.expirationDate;
}
} else {
// Clear out the Facebook instance
if (state == FBSessionStateClosedLoginFailed) {
[FBSession.activeSession closeAndClearTokenInformation];
}
self.facebook = nil;
}
}
परीक्षण के लिए कॉल प्रकाशित करें, एक खाली aPublishAction साथ:
- (void)doPublishAction:(void(^)(FBSession *aSession, NSError *error))aPublishAction {
if ([FBSession.activeSession.permissions
indexOfObject:@"publish_actions"] == NSNotFound) {
NSArray *writepermissions = [[NSArray alloc] initWithObjects:
@"publish_stream",
@"publish_actions",
nil];
[[FBSession activeSession]reauthorizeWithPublishPermissions:writepermissions defaultAudience:FBSessionDefaultAudienceFriends completionHandler:^(FBSession *aSession, NSError *error){
if (error) {
NSLog(@"Error on public permissions: %@", error);
}
else {
aPublishAction(aSession, error);
}
}];
}
else {
// If permissions present, publish the story
aPublishAction(FBSession.activeSession, nil);
}
}
पहले से सब कुछ के लिए धन्यवाद , मैं किसी भी और सभी मदद के लिए आभारी होंगे !!
मुझे लगता है कि publ_actions आपको वह चाहिए जो आपको चाहिए। मुझे लगता है कि अब यह publ_stream शामिल है। – SAHM
क्या आपको कभी इसके लिए समाधान मिला है? मुझे एक ही समस्या है। – Casey
समाधान कभी नहीं मिला, हमने वास्तव में प्रकाशित अनुमतियों की आवश्यकता बंद कर दी, इसलिए हमें समाधान खोजने की आवश्यकता नहीं थी। –