juc*_*ajl 16 sdk facebook objective-c ios
我正在按照本教程 在Facebook SDK 3.1上实现视图预览帖子,但是当我调用此方法时......
// Ask for publish_actions permissions in context
if ([FBSession.activeSession.permissions
indexOfObject:@"publish_actions"] == NSNotFound) {
// No permissions found in session, ask for it
[FBSession.activeSession
reauthorizeWithPublishPermissions:
[NSArray arrayWithObject:@"publish_actions"]
defaultAudience:FBSessionDefaultAudienceFriends
completionHandler:^(FBSession *session, NSError *error) {
if (!error) {
// If permissions granted, publish the story
[self publishStory];
}
}];
} else {
// If permissions present, publish the story
[self publishStory];
}
Run Code Online (Sandbox Code Playgroud)
...
返回以下错误:
*由于未捕获的异常'com.facebook.sdk:InvalidOperationException'终止应用程序,原因:'FBSession:尝试重新授权未打开的会话'
发生了什么事可以?谢谢!
编辑: 冉我的朋友,非常感谢你,但仍然有一个细节...当他第一次发布时,他要求授权申请我授权这块秋天
/**用发布权限打开一个新会话*/
[FBSession openActiveSessionWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
defaultAudience:FBSessionDefaultAudienceOnlyMe
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
if (!error && status == FBSessionStateOpen) {
[self publishStory];
}else{
NSLog(@"error");
//Here I get the error mentioned below
}
}];
}
Run Code Online (Sandbox Code Playgroud)
错误:错误:
domain = com.facebook.sdk,code = 5
eli*_*o.d 48
错误表明FBSession未打开.因此,您应该在尝试重新授权之前检查会话是否已打开.
if ([[FBSession activeSession] isOpen]) {
/*
* if the current session has no publish permission we need to reauthorize
*/
if ([[[FBSession activeSession] permissions]indexOfObject:@"publish_actions"] == NSNotFound) {
[[FBSession activeSession] requestNewPublishPermissions:[NSArray arrayWithObject:@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends
completionHandler:^(FBSession *session,NSError *error){
[self postPhoto];
}];
}else{
[self publishStory];
}
}else{
/*
* open a new session with publish permission
*/
[FBSession openActiveSessionWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
defaultAudience:FBSessionDefaultAudienceOnlyMe
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
if (!error && status == FBSessionStateOpen) {
[self publishStory];
}else{
NSLog(@"error");
}
}];
}
Run Code Online (Sandbox Code Playgroud)
确保一致地请求相同的权限,这应该是publish_actions(记住复数).
| 归档时间: |
|
| 查看次数: |
16877 次 |
| 最近记录: |