मेरे पास एक लिंक साझा करने के लिए एक बटन है। मैं मूल रूप से दो कॉल का उपयोग कर रहा हूं: openActiveSessionWithReadPermissions
और requestNewPublishPermissions
।फेसबुक आईओएस एसडीके 3.5.1: openActiveSessionWithReadPermissions - समापन हैंडलर दो बार
तो इस बटन को कार्रवाई है:
- (IBAction) shareFacebookButtonAction:(id)sender
if (![[FBSession activeSession] isOpen])
{
NSArray *permissions = @[@"read_friendlists", @"email"];
[FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:YES
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error)
{
if (FB_ISSESSIONOPENWITHSTATE([session state]))
{
[self _prepareShare];
}
else
{
// show alert view with error
}
}];
}
else
{
[self _prepareShare];
}
}
और इस के साथ मैं अनुमति प्रकाशित के लिए पूछ रहा हूँ, अगर कोई permissione सत्र में पाए जाते हैं
-(void) _prepareShare;
{
if ([FBSession.activeSession.permissions
indexOfObject:@"publish_actions"] == NSNotFound)
{
[FBSession.activeSession
requestNewPublishPermissions:
[NSArray arrayWithObject:@"publish_actions"]
defaultAudience:FBSessionDefaultAudienceFriends
completionHandler:^(FBSession *session, NSError *error)
{
if (!error)
{
[self _share];
}
else
{
//error
}
}];
} else
{
[self _share];
}
}
_share सिर्फ कुछ पोस्ट करता है
-(void) _share;
{
NSMutableDictionary *params_dict = [NSMutableDictionary dictionary];
// setting some params
[FBRequestConnection startWithGraphPath:@"me/feed" parameters:params_dict HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
if (result)
{
// sharing succedeed, do something
}
else if (error)
{
//sharing failed, do something else
}
}];
}
पहली बार मैं साझा करने का प्रयास करता हूं (पहले से ही आईओएस 6 में एफबी पर लॉग इन किया गया है और ऐप पहले ही अधिकृत है) openActiveSessionWithReadPermissions
का पूरा करने वाला हैंडलर दो बार कहा जाता है: एक बार FBSessionStateOpen के साथ और एक बार FBSessionStateOpenTokenExtended (openSessionForPublishPermissions कॉल से) के साथ। परिणामस्वरूप, _share
को दो बार भी कहा जाता है, else
_prepareShare
(यदि मेरे पास पहले से ही अनुमति अनुमतियां हैं) और ओपन सत्र फॉरपुब्लिशप्रमिशन के समापन हैंडलर में दूसरी बार। तो मेरे पास फेसबुक की दीवार पर एक डबल पोस्ट है, बस पहली बार जब मैंने ऐप में साझा किया था। मुझे FBSession: It is not valid to reauthorize while a previous reauthorize call has not yet completed
के लिए एक क्रैश रिपोर्ट भी मिली (मैं इसे फिर से करने में सक्षम नहीं हो सका)।
इस स्थिति को संभालने का सही तरीका क्या है?
कृपया इस पोस्ट में जवाब देखें: http://stackoverflow.com/questions/12915420/facebook-ios-3-1-: [1] [1] [लिंक यहाँ विवरण दर्ज] एसडीके-लॉगिन-साथ-प्रकाशित-अनुमति-कॉलबैक – Chengjiong