Запросите расширенные разрешения с действительным сеансом пользователя в iphone SDK
В моем приложении для iphone реализована стандартная функция подключения к Facebook с использованием Facebook SDK. на первом шаге пользователю запрашивается только разрешение offline_access.
Теперь мне нужно запросить разрешение publish_stream для пользователя, уже прошедшего аутентификацию.
Здесь я использую тот же метод authorize: делегат: класса Facebook, чтобы запрашивать расширенные разрешения, с той лишь разницей, что я устанавливаю свойство accessToken и expirationDate менеджера facebook со значениями, полученными из первого аутентификация:
Facebook *facebook = [[Facebook alloc] initWithAppId:@"YOUR_APP_ID"];
facebook.accessToken = /* read access token from user defaults */;
facebook.expirationDate = /* read expiration date from user defaults */;
NSArray *permissions = [NSArray arrayWithObject:@"publish_stream"];
[facebook authorize:permissions delegate:self];
Это работает нормально, за исключением некоторых случаев: может случиться так, что новый диалог входа в систему отобразится пользователю перед запросом новых разрешений.
Это проблема для моей реализации, потому что пользователь может войти в систему с разными учетными данными и прервать мой сеанс.
Я не могу понять, почему это происходит, спросив пользователя о автономном доступе тоже. Мне все еще интересно, требуется ли на самом деле установка токена доступа и срока действия.
1 ответ
Facebook *facebook = [[Facebook alloc] initWithAppId:@"YOUR_APP_ID"];
//facebook.accessToken = /* read access token from user defaults */;
//facebook.expirationDate = /* read expiration date from user defaults */;
[facebook setAccessToken:urtoken];
[facebook setExpirationDate:expdate];
NSArray *permissions = [NSArray arrayWithObject:@"publish_stream"];
if(![facbook isSessionValid])
{
[facebook authorize:permissions delegate:self];
}