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

Posted

技术标签:

【中文标题】如何使用 facebook sdk 在 ios 中创建 facebook 测试用户【英文标题】:How do you create a facebook test user in ios using the facebook sdk 【发布时间】:2011-10-08 23:04:20 【问题描述】:

我开发了一个需要 facebook 朋友的电子邮件地址的 iphone 应用程序。假设您的朋友有该应用并已授予电子邮件和offline_access的权限,那么我相信可以使用:

[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 应用程序中使用该网站上的信息。

【问题讨论】:

【参考方案1】:

好的,我也一直在研究这个,这就是我想出的。

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

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

其中params 是一个 NSMutableDictionary,其中包含https://developers.facebook.com/docs/test_users/ 中详述的部分或全部参数。

但是,我发现 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];

希望这将帮助您克服困难,开始对测试用户进行试验。

【讨论】:

以上是关于如何使用 facebook sdk 在 ios 中创建 facebook 测试用户的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 10 上使用 Facebook iOS SDK

如何在 ios 中使用 facebook sdk 4.1 获取用户信息?

如何在 AppDelegate 中使用 Parse 正确设置 Facebook iOS SDK?

如何在使用 facebook-ios-sdk 的应用中实现聊天

如何在 IOS 中使用最新的 facebook sdk 在朋友墙上发布文字

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