我正在尝试测试我原生的iOS应用程序,并且我一直遇到测试用户的巨大问题。基本上,基于常规图形的创建测试用户的方式似乎不适用于本机应用程序。当我尝试从服务器获得以下响应时:
{
"error": {
"message": "(#15) This method is not supported for native apps",
"type": "OAuthException",
"code": 15
}
}
这似乎得到SO上的各种帖子以及旧FB论坛上的页面的支持:
http://forum.developers.facebook.net/viewtopic.php?id=93086
人们说,为本机应用程序创建测试用户的唯一方法是在FB上创建适当的虚假帐户,这违反了FB条款和条件。这真的是我唯一的选择吗?我无法相信FB开发者不能支持本机应用程序的测试帐户。
任何人都知道创建本机应用测试用户的任何合法方式吗?
答案 0 :(得分:1)
在the developer documentation for test users的顶部,还提到了一个用于维护测试用户的GUI。
除了下面描述的用于以编程方式管理测试用户的图谱API功能外,开发人员应用程序中还有一个简单的GUI,可在应用程序的角色页面上找到,如下面的屏幕截图所示。它公开了本文档中描述的所有API函数。
由于某些原因我不明白,如果您的应用具有Native / Desktop的“应用类型”(在“设置” - >“高级”下),则无法使用图谱API调用。但您可以改用GUI。
答案 1 :(得分:0)
您可以通过调用以下功能为您的应用创建新的Facebook测试用户。
请使用您的APP ID(转到此链接获取您应用的ID:https://developers.facebook.com/apps)
请在Facebook上访问您的应用并获取应用秘密ID
-(void)createNewUser{
NSString *appID=@"Past your App ID"
NSString *appSecret=@"Past your App secret"
NSDictionary *params = @{
@"true": @"installed",
@"access_token": @"appID|appSecret",
};
NSString *path = [NSString stringWithFormat:@"/appID/accounts/test-users"];
/* make the API call */
[FBRequestConnection startWithGraphPath:path
parameters:params
HTTPMethod:@"POST"
completionHandler:^(
FBRequestConnection *connection,
id result,
NSError *error
)
{
if (result && !error)
{
NSLog(@"Test-User created successfully: %@", result);
}
else
{
NSLog(@"Error creating test-user: %@", error);
NSLog(@"Result Error: %@", result);
}
}];
}
请确保您不会向任何人透露您的应用程序密码ID,并且不要将其包含在硬编码的应用程序中。
希望有所帮助
答案 2 :(得分:0)
以下适用于我使用Facebook iOS SDK v4.1.0:
// Listed as "App ID": https://developers.facebook.com/apps/
NSString *facebookAppId = @"1234_REPLACE_ME_5678";
// Listed as "App Token": https://developers.facebook.com/tools/accesstoken/
NSString *facebookAppToken = @"ABCD_REPLACE_ME_1234";
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:[NSString stringWithFormat:@"/%@/accounts/test-users",
facebookAppId]
parameters:@{@"installed" : @"true"}
tokenString:facebookAppToken
version:@"v2.3"
HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
NSDictionary *testUser,
NSError *facebookError) {
if (facebookError) {
NSLog(@"Error creating test user: %@", facebookError);
} else {
NSLog(@"access_token=%@", testUser[@"access_token"]);
NSLog(@"email=%@", testUser[@"email"]);
NSLog(@"user_id=%@", testUser[@"id"]);
NSLog(@"login_url=%@", testUser[@"login_url"]);
NSLog(@"password=%@", testUser[@"password"]);
}
}];
成功后,输出如下:
access_token=CACQSQXq3KKYeahRightYouDontGetToLookAtMyAccessTokenspBkJJK16FHUPBTCKIauNO8wZDZD
email=aqhndli_huisen_1430877783@tfbnw.net
user_id=1384478845215781
login_url=https://developers.facebook.com/checkpoint/test-user-login/1384478845215781/
password=1644747383820
答案 3 :(得分:0)
Swift4版本。
import FBSDKCoreKit
// App Token can be found here: https://developers.facebook.com/tools/accesstoken/
let appToken = "--EDITED--"
let appID = "--EDITED--"
let parameters = ["access_token": appID + "|" + appToken, "name": "Integration Test"]
let path = "/\(appID)/accounts/test-users"
guard let request = FBSDKGraphRequest(graphPath: path, parameters: parameters, httpMethod: "POST") else {
fatalError()
}
request.start { _, response, error in
if let error = error {
// Handle error.
return
}
if let response = response as? [AnyHashable: Any],
let userID = response["id"] as? String,
let token = response["access_token"] as? String,
let email = response["email"] as? String {
// Handle success response.
} else {
// Handle unexpected response.
}
}
答案 4 :(得分:-1)
您可以使用Facebook的测试用户API https://developers.facebook.com/docs/test_users/来创建测试用户,只需确保使用相同的App ID。
鉴于APP_ID和APP_SECRET,以下内容为我们提供了APP_ACCESS_TOKEN
curl -vv 'https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=client_credentials'
然后我们可以使用令牌创建测试用户:
curl 'https://graph.facebook.com/APP_ID/accounts/test-users?installed=true&name=NEW_USER_NAME&locale=en_US&permissions=read_stream&method=post&access_token=APP_ACCESS_TOKEN
在此命令的响应正文中将显示新用户的电子邮件和密码。