- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 SDK 3.22.0。
if (FBSession.activeSession.isOpen) {
[FBSession.activeSession
requestNewPublishPermissions:@[@"publish_actions"]
defaultAudience:FBSessionDefaultAudienceFriends
completionHandler:^(FBSession *session, NSError *error) {
NSLog(@"error = %@", error);
NSLog(@"session open = %d", session.isOpen);
NSLog(@"session.permissions = %@", session.permissions);
NSLog(@"session.accessTokenData.declinedPermissions = %@", session.accessTokenData.declinedPermissions);
}];
}
else {
[FBSession
openActiveSessionWithPublishPermissions:@[@"publish_actions"]
defaultAudience:FBSessionDefaultAudienceFriends
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
NSLog(@"error = %@", error);
NSLog(@"session open = %d", session.isOpen);
NSLog(@"status = %lu", status);
NSLog(@"session.permissions = %@", session.permissions);
NSLog(@"session.accessTokenData.declinedPermissions = %@", session.accessTokenData.declinedPermissions);
}];
}
我正在与尚未发布权限且从未拒绝过的用户进行测试。在此帐户的 FB 应用程序设置中,应用程序可见性设置为“ friend ”,发布权限甚至不在设置列表中,因为它们适用于其他用户/应用程序。
在这两种情况下,FB 应用程序打开并立即返回到我的应用程序,无需请求权限。 declinedPermissions
的响应是一个包含 publish_actions
的数组。
我的预期是 FB 应用会要求用户批准发布。
我收到了多个用户的报告,他们遇到了同样的问题 - 无法添加发布权限,但有些人能够获得权限。
要补充的一件事是,在将应用程序提交给测试组以外的用户进行 FB 批准之前,我遇到了同样的问题,但是当应用程序获得批准后,它开始为这些用户工作。现在看来,即使应用获得批准,问题仍然存在,只是针对随机用户。
我请求权限的方式是否有问题?
最佳答案
看起来这行得通:
- (BOOL)hasWritePermissions {
if (!FBSession.activeSession.isOpen) return NO;
return [FBSession.activeSession.permissions indexOfObject:@[@"publish_actions"]] != NSNotFound;
}
- (void)requestWritePermissions:(void(^)(BOOL status, NSError *error))callback {
if (self.hasWritePermissions) {
callback(YES, nil);
return;
}
if (FBSession.activeSession.isOpen) {
[FBSession.activeSession
requestNewPublishPermissions:@[@"publish_actions"]
defaultAudience:FBSessionDefaultAudienceFriends
completionHandler:^(FBSession *session, NSError *error) {
NSLog(@"error = %@", error);
NSLog(@"session open = %d", session.isOpen);
NSLog(@"session.permissions = %@", session.permissions);
NSLog(@"session.accessTokenData.declinedPermissions = %@", session.accessTokenData.declinedPermissions);
if (self.hasWritePermissions) {
callback(YES, nil);
}
else {
callback(NO, error);
}
}];
}
else {
[FBSession
openActiveSessionWithPublishPermissions:@[@"publish_actions"]
defaultAudience:FBSessionDefaultAudienceFriends
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
NSLog(@"error = %@", error);
NSLog(@"session open = %d", session.isOpen);
NSLog(@"status = %u", status);
NSLog(@"session.permissions = %@", session.permissions);
NSLog(@"session.accessTokenData.declinedPermissions = %@", session.accessTokenData.declinedPermissions);
[self requestWritePermissions:callback]; // this time, with an open session
}];
}
}
如果没有 session ,我运行 openActiveSessionWithPublishPermissions
,然后再次运行 requestNewPublishPermissions
。
问题是 openActiveSessionWithPublishPermissions
甚至没有去 Facebook 应用程序获取更多权限就触发了回调(看起来像 FB 错误,将报告),但这种方法似乎可以解决它。
我发现的另一个问题是 session.permissions 并不总是反射(reflect) Facebook 上的权限。我发现确保拥有最新权限的唯一方法是发出 API 请求:
[FBRequestConnection startWithGraphPath:@"/me/permissions" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
并检查 result.data 数组以获取授予/拒绝的权限。
关于ios - openActiveSessionWithPublishPermissions/requestNewPublishPermissions publish_actions 不添加权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28132663/
我正在尝试使用 iOS 上的 Facebook SDK 从用户那里获得发帖权限。 我在一个方法中调用下面的代码,如果应用程序没有发布到用户 facebook 墙上所需的发布权限,则会调用该方法。
我关注了 FB tutorial一步一步来,我不明白为什么这不起作用。 我所有的 fragment 都继承自 BaseFragment : public class BaseFragment exte
使用 SDK 3.22.0。 if (FBSession.activeSession.isOpen) { [FBSession.activeSession requestNewPub
我正尝试在我的 Android 应用程序中从我的用户那里获得发布权限,并且我成功了,但是当我获得权限时,我想要一个回调来告诉我这一点。这是我的代码: private void requestPubli
目前我调用requestNewPublishPermissions请求publish_stream权限。 有没有办法让我查看用户是否已经授权该权限,这样我就不需要再次询问了? 我认为 Session.
我正在开发一个与 Facebook 集成的 Android 应用程序。我想: 让用户使用 Facebook 登录 在 Facebook 上获取用户的电子邮件地址(可以是 proxied email a
我正在将 facebook 集成到我的 android 应用程序中,当用户首次登录时,我正在使用我的 requestFacebookPermissions(session) 方法请求 publish_
我在使用 requestNewPublishPermissions 时遇到问题(我使用的是 SDK 3.17 版)。 Facebook 文档说只使用读取权限登录,然后再请求写入权限,这就是我想要做的。
我是一名优秀的程序员,十分优秀!