9

我正在尝试测试我的原生 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 开发人员不能支持本地应用程序的测试帐户。

任何人都知道创建本机应用程序测试用户的任何合法方式吗?

4

5 回答 5

1

在面向测试用户的开发人员文档的顶部,还提到了用于维护测试用户的 GUI。

除了下面描述的用于以编程方式管理测试用户的 Graph API 功能外,开发人员应用程序中还有一个简单的 GUI,可在应用程序的角色页面上使用,如下面的屏幕截图所示。它公开了本文档中描述的所有 API 函数。

出于某种原因,我不明白,如果您的应用程序的“应用程序类型”(在“设置”->“高级”下)为 Native/Desktop,则 Graph API 调用不可用。但是您可以改用 GUI。

于 2012-12-12T15:11:45.083 回答
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,并且永远不要将其包含在您的应用程序中,像这样进行硬编码。

希望能帮助到你

于 2015-05-02T23:58:01.593 回答
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
于 2015-05-06T02:07:57.663 回答
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.
   }
}
于 2017-11-08T12:51:07.773 回答
-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

在此命令的响应正文中将包含新用户的电子邮件和密码。

于 2012-08-21T18:41:42.627 回答