在IOS中使用应用程序访问令牌

由于Facebook改变了他们的访问令牌政策,我现在不得不包含访问令牌来获取用户公共post。

从文档中可以看到,我可以使用应用程序访问令牌,所以我仍然可以在不向用户请求权限的情况下获取post。 但是因为我不知道这是如何工作的,而facebook的文档没有举例说明如何在IOS上实现这个,所以我想问你的帮助!

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

我不确定这是你在找什么,但是如果你想做一些简单的事情,比如获取用户的公开信息,你可以这样做。

使用以下请求获取令牌:

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

我猜你已经得到了你的应用程序ID和秘密,因为你已经获取了令牌。 无论如何,令牌将被返回,如下所示:

 access_token=ACCESS_TOKEN 

parsing出令牌:并将其放入以下请求中:

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

您可以使用下面的代码parsing出令牌:

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

编辑:获取postURL将给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]; 

尽pipe您可以这样做,但API文档指出

应用程序login允许您为您的应用程序采取各种pipe理措施,例如检索“见解”数据或批准请求。 需要应用程序访问令牌的graphicsAPI调用在API参考中清楚地标出。

我认为这可能是一个安全风险,因为有人可以拦截你的应用程序访问令牌,并通过API做所有这些事情。 更不用说在iOS应用程序中embeddedclient_secret(基本上是您的应用程序的密码)。 我认为应用程序login是更多的PHP服务器使用。