Как создать тестового пользователя Facebook в ios с помощью Facebook sdk

#objective-c #ios #facebook #facebook-graph-api

#objective-c #iOS #Facebook #facebook-graph-api

Вопрос:

Я разработал приложение для iphone, которому нужен адрес электронной почты друга на Facebook. Предполагая, что у вашего друга есть приложение и он предоставил разрешения для электронной почты и offline_access, я считаю, что можно использовать:

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

чтобы получить их адрес электронной почты. Как создать в приложении ios тестового пользователя Facebook с помощью Facebook sdk для целей тестирования и отправки в Apple? Как создать в приложении ios тестового пользователя Facebook с помощью facebook sdk? Facebook предоставляет возможность создавать тестовых пользователей (http://developers.facebook.com/docs/test_users /), но я не могу понять, как использовать информацию на этом веб-сайте в моем приложении для ios, используя их sdk / graph api.

Ответ №1:

Хорошо, я тоже изучал это, и вот что я придумал.

Согласно документации, нужно иметь возможность создать тестового пользователя, вызвав graph 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 запрашивает токен доступа к приложению для создания тестового пользователя, а метод requestWithGraphPath:andParams:andHttpMethod:andDelegate: в файле SDK Facebook.m фактически отправляет токен доступа пользователя. Даже если вы специально установите токен доступа к приложению в params словаре, он будет перезаписан токеном доступа пользователя в этом методе.

Казалось бы, есть два способа обойти это затруднительное положение. Мы могли бы поиграть с Facebook SDK и принять это во внимание, что определенно не рекомендуется. Или мы могли бы прибегнуть к стандартным HTTP-запросам и взять дело в свои руки. Вот как я справился со вторым подходом.

Сначала нам нужен токен доступа к приложению, который можно получить, отправив запрос на: https://graph.facebook.com/oauth/access_token?client_id=APP_IDamp;client_secret=APP_SECRETamp;grant_type=client_credentials .

Затем мы используем токен доступа к приложению, возвращенный из этого запроса, в нашем следующем запросе, чтобы: https://graph.facebook.com/APP_ID/accounts/test-users?installed=trueamp;name=FULL_NAMEamp;permissions=read_streamamp;method=postamp;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=trueamp;permissions=read_streamamp;access_token=APP_ACCESS_TOKEN";
NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
[testUserRequest setHTTPBody:bodyData];
[[NSURLConnection alloc] initWithRequest:testUserRequest delegate:self];
[testUserRequest release];
  

Надеюсь, это поможет вам преодолеть трудности в экспериментировании с тестовыми пользователями.