Запросите расширенные разрешения с действительным сеансом пользователя в iphone SDK - PullRequest
0 голосов
/ 08 июня 2011

В моем приложении для 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 Ответ

0 голосов
/ 08 июня 2011
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];
}
...