在IOS中使用app访问令牌

时间:2011-06-05 17:50:00

标签: objective-c ios facebook-graph-api

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

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

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

2 个答案:

答案 0 :(得分:10)

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

使用以下请求获取令牌:

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

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

access_token=ACCESS_TOKEN

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

https://graph.facebook.com/FACEBOOK_USER_ID/posts?access_token=ACCESS_TOKEN

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

    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);
    }

编辑:由于非法字符,获取帖子网址将提供BadURL。你可以这样做来解决它:

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

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

[_facebook requestWithGraphPath:@"[user_id]/feed" 
                  andParams:[NSMutableDictionary dictionaryWithObject:ACCESS_TOKEN forKey:@"access_token"]
              andHttpMethod:@"GET"
                andDelegate:self];

答案 1 :(得分:0)

虽然您可以这样做,但API文档说明了

  

App Login允许您对应用程序执行各种管理操作,例如检索Insights数据或批准请求。需要app访问令牌的图形API调用在API参考中清楚地表示。“

我认为这可能存在安全风险,因为有人可能会截取您的应用访问令牌并通过API执行所有这些操作。更不用说在iOS应用程序中嵌入client_secret(基本上是你的应用程序的密码)。我认为app登录更适合PHP服务器使用。