Logowanie do Facebooka iOS 3.1 za pomocą wywołań zwrotnych uprawnień do publikowania
Mam problem z zalogowaniem się z uprawnieniami do publikowania na facebooku 3.1 ios sdk.
Moja aplikacja ma przycisk do udostępniania wideo, a gdy użytkownik go kliknie, chcę dodać uprawnienie podstawowe + publikowanie. Jak rozumiem, muszę wykonać dwa połączenia -
openActiveSessionWithReadPermissions
, i wtedyreauthorizeWithPublishPermissions
Oto kod, którego używam teraz:
//Opens a Facebook session and optionally shows the login UX.
- (void)openSessionForReadPermissions
{
[FBSession openActiveSessionWithReadPermissions:nil
allowLoginUI:YES
completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error) {
//this is called even from the reauthorizeWithPublishPermissions
if (state == FBSessionStateOpen && !error)
{
[self openSessionForPublishPermissions];
}
else if (state == FBSessionStateClosedLoginFailed)
{
[FBSession.activeSession closeAndClearTokenInformation];
[[NSNotificationCenter defaultCenter] postNotificationName:FBLoginErrorNotification object:session];
}
}];
}
-(void)openSessionForPublishPermissions
{
NSArray* permissions = [NSArray arrayWithObject:@"publish_stream"];
[[FBSession activeSession] reauthorizeWithPublishPermissions:permissions
defaultAudience:FBSessionDefaultAudienceFriends
completionHandler:
^(FBSession *session, NSError *error)
{
if (!error)
{
[[NSNotificationCenter defaultCenter]
postNotificationName:FBLoginSuccessNotification
object:session];
}
else
{
[[NSNotificationCenter defaultCenter]
postNotificationName:FBLoginErrorNotification
object:session];
}
}];
}
Widzę, że blok w openSessionForReadPermissions jest wywoływany dwa razy (raz z FBSessionStateOpen i raz z FBSessionStateOpenTokenExtended z wywołania openSessionForPublishPermissions) i otrzymuję ErrorReauthorizeFailedReasonUserCancelled przy pierwszej próbie zalogowania się do aplikacji (jeśli O usunął wszystkie uprawnienia aplikacji wcześniej).
Jaki jest właściwy sposób wdrożenia tego logowania? Aplikacja nie wymaga logowania na Facebooku, z wyjątkiem tej jednej funkcji, więc proces logowania powinien odbywać się na tym samym przycisku.
Dzięki!