如何使用facebook sdk在ios中创建Facebook测试用户

问题描述:

我开发了一个需要Facebook朋友的电子邮件地址的iphone应用程序。假设您的朋友有应用程序,并已授予的权限电子邮件和offline_access的话,我相信这是可能的使用方法:如何使用facebook sdk在ios中创建Facebook测试用户

[facebook requestWithGraphPath:@"FRIEND_ID?fields=id,email" andDelegate:self]; 

获得他们的电子邮件地址。为了测试目的并提交给苹果,您如何使用facebook sdk在iOS应用程序中创建一个Facebook测试用户? Facebook提供了创建测试用户的功能(http://developers.facebook.com/docs/test_users/),但我无法理解如何使用他们的sdk/graph api在我的ios应用程序中使用本网站上的信息。

好的,我一直在研究这个,以下是我想到的。

根据文档,应该能够通过调用在所述图形API来创建测试用户如下:

NSString *urlString = [NSString stringWithFormat:@"%@/accounts/test-users", kAppId]; 
[facebook requestWithGraphPath:urlString andParams:params andHttpMethod:@"POST" andDelegate:self]; 

其中params是包含一些或所有的参数作为在https://developers.facebook.com/docs/test_users/详述一个NSMutableDictionary 。

然而,我发现,API期望的应用程序访问令牌创建测试用户,以及SDK文件Facebook.m内的方法requestWithGraphPath:andParams:andHttpMethod:andDelegate:实际发送用户访问令牌。即使您在params字典中专门设置了应用程序访问令牌,它也会在此方法中用用户访问令牌覆盖。

看来围绕这种困境有两种方法。我们可以用Facebook SDK猴子,并考虑到这一点,这是绝对不推荐。或者我们可以诉诸标准的HTTP请求,并将事情掌握在我们自己的手中。这是我如何处理第二种方法。

首先,我们需要应用程序访问令牌,可以通过向以下网址发送请求来获取令牌: https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=client_credentials

然后我们可以从该请求返回的应用程序访问令牌在我们的下一个请求: https://graph.facebook.com/APP_ID/accounts/test-users?installed=true&name=FULL_NAME&permissions=read_stream&method=post&access_token=APP_ACCESS_TOKEN

总体格式都要求是一样的。以下是两个请求中的第二个请求的整个请求在代码中的样子。

NSString *urlString = @"https://graph.facebook.com/APP_ID/accounts/test-users"; 
NSURL *testUserUrl = [NSURL URLWithString:urlString]; 
NSMutableURLRequest *testUserRequest = [[NSMutableURLRequest alloc] initWithURL:testUserUrl]; 
[testUserRequest setHTTPMethod:@"POST"]; 
[testUserRequest addValue:@"text/plain" forHTTPHeaderField:@"content-type"]; 
NSString *bodyString = @"installed=true&permissions=read_stream&access_token=APP_ACCESS_TOKEN"; 
NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding]; 
[testUserRequest setHTTPBody:bodyData]; 
[[NSURLConnection alloc] initWithRequest:testUserRequest delegate:self]; 
[testUserRequest release]; 

希望这将有助于让你在测试用户的实验过程中得到帮助。