在IOS中使用app访问令牌

Jos*_*Jos 13 objective-c facebook-graph-api ios

由于Facebook改变了有关访问令牌的政策,我现在被迫包含访问令牌以获取用户公开帖子.

正如文档中所读,我可以使用app访问令牌,所以我仍然可以在不询问用户权限的情况下获取帖子.但由于我不知道这是如何工作的,并且facebook文档没有举例说明如何在IOS上实现这一点,我想请求你的帮助!

有没有人有我如何在我的代码中实现这个的例子?Thnx提前!!

Joe*_*oel 10

我不确定这是不是你想要的,但如果你想做一些简单的事情,比如获取用户的公开帖子,你就可以这样做.

使用以下请求获取令牌:

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials
Run Code Online (Sandbox Code Playgroud)

我猜你已经获得了你的app id和秘密,因为你已经检索了这个令牌.无论如何,令牌将在响应中返回,如下所示:

access_token=ACCESS_TOKEN
Run Code Online (Sandbox Code Playgroud)

解析令牌:并将其放入以下请求中:

https://graph.facebook.com/FACEBOOK_USER_ID/posts?access_token=ACCESS_TOKEN
Run Code Online (Sandbox Code Playgroud)

您可以使用以下代码解析令牌:

    NSRange access_token_range = [responseString rangeOfString:@"access_token="];
    if (access_token_range.length > 0) {
        int from_index = access_token_range.location + access_token_range.length;
        NSString *access_token = [responseString substringFromIndex:from_index];

        NSLog(@"access_token:  %@", access_token);
    }
Run Code Online (Sandbox Code Playgroud)

编辑:由于非法字符,获取帖子URL将给出BadURL.你可以这样做来解决它:

NSString *encodedURLString = [yourUrlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];    
NSURL *url = [NSURL URLWithString:encodedURLString];
Run Code Online (Sandbox Code Playgroud)

我没有使用Facebook SDK,所以我真的不知道它是如何工作的,但我想你应该这样做:

[_facebook requestWithGraphPath:@"[user_id]/feed" 
                  andParams:[NSMutableDictionary dictionaryWithObject:ACCESS_TOKEN forKey:@"access_token"]
              andHttpMethod:@"GET"
                andDelegate:self];
Run Code Online (Sandbox Code Playgroud)