带有App Token的图形API,用于页面无法正常工作

时间:2014-09-10 20:09:16

标签: ios facebook facebook-graph-api token

我正在使用Facebook登录开发应用程序,并使用用户名和密码登录。

现在,我想在Facebook上找到所有用户类型(Facebook和普通用户)的公共页面的所有事件。

问题是拥有Facebook的用户可以检索数据,但是"正常"用户不能,因为数据是零。

步骤如下:

1 - 使用我的Facebook App的正确凭据编译此网址:

https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=client_credentials

2 - 将网址放入浏览器并检索应用程序令牌格式为:

53682XXXXXXXXXX | w6F3Ic6L48XXXXXXXXXXXXXXXXX

3 - 使用这段代码:

NSString *token = [[[FBSession activeSession] accessTokenData] accessToken];
NSString *urlString;
        if (!userWithFb) {
            NSString *token = @"53682XXXXXXXXXX|w6F3Ic6L48XXXXXXXXXXXXXXXXX";
            urlString = [NSString stringWithFormat:@"https://graph.facebook.com/%@/events?access_token=%@", pageId,token];
        }else{
            urlString = [NSString stringWithFormat:@"https://graph.facebook.com/%@/events?access_token=%@", pageId,token];
        }

        NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
        if(data != nil)
            [self performSelectorOnMainThread:@selector(fetchedData:)
                                   withObject:data waitUntilDone:YES];

但普通用户的数据为零。当我把" urlstring"在我的浏览器中,我看到了所有数据,我不知道问题出在哪里。等待解决方案我说谢谢。

1 个答案:

答案 0 :(得分:0)

我通过在if语句之后添加这段代码解决了我的问题:

NSString *encodedURLString = [urlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
        url = [NSURL URLWithString:encodedURLString];

        NSData* data = [NSData dataWithContentsOfURL:url];

问题是“|”在令牌中,它必须替换为“&”。

希望这对你有帮助!