我遇到了登錄與Facebook的發佈權限3.1的ios sdk。Facebook的iOS 3.1 sdk登錄與發佈權限回調
我的應用程序有一個共享視頻的按鈕,當用戶點擊它時我想添加基本+發佈權限。據我瞭解,我必須做兩個通話 -
openActiveSessionWithReadPermissions
,然後reauthorizeWithPublishPermissions
這是我現在使用的代碼:
//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];
}
}];
}
我看到openSessionForReadPermissions中的塊被調用兩次(一次使用FBSessionStateOpen,一次使用來自openSessionForPublishPermissions調用的FBSessionStateOpenTokenExtended),一次當第一次嘗試登錄應用程序時,我得到ErrorReauthorizeFailedReasonUserCancelled(如果O之前刪除了所有應用程序權限)。
什麼是實現此登錄的正確方法?該應用程序不需要Facebook登錄,除了這一功能,所以登錄過程應該在同一按鈕上。
謝謝!
+1我們陷入了同樣的問題,特別是因爲混合權限調用被取消。 –
reauthorizeWithPublishPermissions折舊。改爲使用 requestNewPublishPermissions。 – John