gpt4 book ai didi

ios - openActiveSessionWithPublishPermissions/requestNewPublishPermissions publish_actions 不添加权限

转载 作者:行者123 更新时间:2023-11-29 10:33:48 26 4
gpt4 key购买 nike

使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com