Использование токена доступа к приложениям в IOS

Так как Facebook изменил свою политику на наличие токена доступа или нет, я теперь вынужден включить токен доступа для получения публичных сообщений пользователя.

Как видно из документации, я могу использовать токен доступа к приложениям, поэтому я все равно могу получать сообщения, не спрашивая у пользователя разрешения. Но так как я понятия не имею, как это работает, и в документации на facebook не приводится пример того, как реализовать это в IOS, я хочу попросить вашу помощь!

Есть ли у кого-нибудь пример того, как мне нужно реализовать это в моем коде? Thnx заранее!

Ответы

Ответ 1

Я не уверен, что это то, что вы ищете, но если вы пытаетесь сделать что-то простое, как получение публичных сообщений пользователя, вы можете сделать это вот так.

Используйте следующий запрос для получения токена:

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials

Я предполагаю, что у вас есть идентификатор вашего приложения и секрет, так как вы уже получили токен. Во всяком случае, токен будет возвращен в ответ следующим образом:

access_token=ACCESS_TOKEN

Разберите маркер и поместите его в следующий запрос:

https://graph.facebook.com/FACEBOOK_USER_ID/posts?access_token=ACCESS_TOKEN

Вы можете использовать следующий код для анализа маркера:

    NSRange access_token_range = [responseString rangeOfString:@"access_token="];
    if (access_token_range.length > 0) {
        int from_index = access_token_range.location + access_token_range.length;
        NSString *access_token = [responseString substringFromIndex:from_index];

        NSLog(@"access_token:  %@", access_token);
    }

EDIT: URL-адрес получаемых сообщений даст BadURL из-за незаконных символов. Вы можете сделать это, чтобы исправить это:

NSString *encodedURLString = [yourUrlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];    
NSURL *url = [NSURL URLWithString:encodedURLString];

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

[_facebook requestWithGraphPath:@"[user_id]/feed" 
                  andParams:[NSMutableDictionary dictionaryWithObject:ACCESS_TOKEN forKey:@"access_token"]
              andHttpMethod:@"GET"
                andDelegate:self];

Ответ 2

Хотя вы можете это сделать, документация API содержит

App Login позволяет выполнять различные административные действия для вашего приложения, такие как получение данных Insights или утверждение запросов. Графические API-вызовы, для которых требуется токен доступа к приложениям, четко обозначены в ссылке API.

Я думаю, что это может быть угрозой безопасности, поскольку кто-то может перехватить токен доступа к приложениям и сделать все это через API. Не говоря уже о том, что в приложении iOS встроен client_secret (который является в основном паролем для вашего приложения). Я думаю, что приложения для приложений больше для серверов PHP.