我正在使用 FBSDKLoginButton 在我的应用中通过 Facebook 登录。我将 readPermissions 定义为;
NSArray *permissions = [NSArray arrayWithObjects:@"public_profile", @"email",nil];
self.loginFbBtn.readPermissions = permissions;
以上情况一切顺利。但是现在如果我需要向我的时间轴询问帖子的权限并希望能够访问“ publish_actions ”权限,是否有办法在不实际挑衅 FBSDKLoginManager 的情况下询问这些权限,因为这是Facebook docs中给出的唯一方法:
if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"]) {
// TODO: publish content.
} else {
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
//TODO: process error or result.
}];
}
显然,这是您为应用调用“ publish_actions ”的唯一方法。我想在没有 FBSDKLoginManager 的情况下使用它。请帮忙,我需要这样做。
所以这是最新消息:
在 Wizkid 和 MingLi 的帮助下,我最终通过 FBSDKLoginManager 实现了它,以下代码段用于通过自定义进行Facebook登录按钮及其@selector(facebookLogin)
,然后通过方法getSharingPermissions
分享需要共享时共享的权限:
-(void) facebookLogin
{
@try
{
self.loginManager = [[FBSDKLoginManager alloc] init];
[self.loginManager setLoginBehavior:FBSDKLoginBehaviorWeb];
[self.loginManager logInWithReadPermissions:@[@"public_profile",@"email"] handler:^(FBSDKLoginManagerLoginResult *result,NSError *error)
{
if([FBSDKAccessToken currentAccessToken])
{
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
{
if (!error)
{
NSLog(@"fetched user:%@", result);
NSDictionary *userDict = (NSDictionary*)result;
}
}];
}}];
}
}
@catch (NSException *exception)
{
NSLog(@"Exception %@", exception);
}
获取分享权限:
-(void)getSharePermissions
{
if (![[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"])
{
[self.loginManager setLoginBehavior:FBSDKLoginBehaviorWeb];
[self.loginManager logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
if ([result.grantedPermissions containsObject:@"publish_actions"])
{
}}];
}
}
所以错误是我再次获取“登录”页面,并在调用getSharingPermissions
时再次询问用户凭据。请帮忙。提前致谢。