Как создать тестового пользователя для нативного приложения iOS? - PullRequest
9 голосов
/ 15 февраля 2012

Я пытаюсь протестировать свое родное приложение для 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 не могут поддерживать тестовые учетные записи для собственных приложений.

Кто-нибудь знает какой-либо законный способ создания собственных тестовых пользователей приложения?

Ответы [ 5 ]

1 голос
/ 12 декабря 2012

Вверху документация для разработчиков для тестовых пользователей , также упоминается графический интерфейс для поддержки тестовых пользователей.

В дополнение к функциональности Graph API, описанной ниже для программного управления тестовыми пользователями, в приложении для разработчиков также имеется простой графический интерфейс пользователя, доступный на странице ролей вашего приложения, как показано на скриншотах ниже. Он предоставляет все функции API, описанные в этом документе.

По какой-то причине я не понимаю, вызовы Graph API недоступны, если у вашего приложения есть «Тип приложения» (в разделе «Настройки» -> «Дополнительно») Native / Desktop. Но вместо этого вы можете использовать графический интерфейс.

0 голосов
/ 08 ноября 2017

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.
   }
}
0 голосов
/ 06 мая 2015

Следующее работает для меня, используя 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
0 голосов
/ 03 мая 2015

Вы можете создать нового тестового пользователя Facebook для своего приложения, вызвав следующую функцию.

Пожалуйста, введите свой идентификатор приложения (перейдите по этой ссылке, чтобы получить идентификатор приложения: https://developers.facebook.com/apps)

Пожалуйста, зайдите в свое приложение на Facebook и получите секретный идентификатор приложения

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

     }];
}

Пожалуйста, убедитесь, что вы никому не раскрываете свой секретный идентификатор приложения и никогда не включаете его в свое приложение в таком жестком коде.

Надеюсь, это поможет

0 голосов
/ 21 августа 2012

Вы можете использовать API тестового пользователя Facebook https://developers.facebook.com/docs/test_users/ для создания тестовых пользователей, просто используйте тот же идентификатор приложения.

Учитывая 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

в ответеТело к этой команде будет электронная почта и пароль новых пользователей.

...