23 мар. 2011 г.

FBconnect Login/Logout

В данной статье будет код только на Objective-C, поэтому полезно знать как вызывать внешние методы из Unity или прочитать статью как это делать. 

Для работы с Facebook я использовал Facebook  iOS SDK.
1. Открываем в XCode проект, расположенный в папке src.
2. Перетаскиваем из него папку Facebook в свой проект.
3. В свойствах проекта в Header Search Path прописываем путь к папке src.
4. Подключаем CoreGraphics framework. 
5. В info.plst добавляем строку "URL Types", внутри "Item 0" создаем строку "URL Schemes" и присваеваем ключу "Item 0" значение fb[ID приложения]

Для того, чтобы запрашивать у пользователя Facebook из приложения доступ к тем или иным функциям, сначала нужно зарегистрировать его на FB. Идем сюда, нажимаем "Создать новое приложение" и заполняем соответствующую информацию.
Для данного примера нам понадобится ID приложения.

Создаем класс со свойством Facebook* fb.
Для логина и выхода используются следующие методы:

- (void)login 
{
    fb = [[Facebook alloc] initWithAppId:@"ID приложения"];
   // используются для проверки заогинен ли пользователь
    // возможно не самый лучший вариант, но другого не нашел
    fb.accessToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"AccessToken"];
    fb.expirationDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"];
   // в данном случае пользователя спросят о том, согласен ли он, чтобы
    // наше приложение могло писать ему на стену сообщения без его ведома
    permissions =  [[NSArray arrayWithObjects: @"publish_stream", nil] retain];
   
    // и вызываем диалог для входа
    [fb authorize:permissions delegate:self];
}

- (void)fbDidLogin 
{
    // если пользователь успешно вошел, записываем в память соответствующую информацию.
// Это также необходимо для проверки залогинен ли пользоваетель
    [[NSUserDefaults standardUserDefaults] setObject:fb.accessToken forKey:@"AccessToken"];
[[NSUserDefaults standardUserDefaults] setObject:fb.expirationDate forKey:@"ExpirationDate"];
}

- (void)logout 
{
    [fb logout:self];
[[NSUserDefaults standardUserDefaults] setObject:fb.accessToken forKey:@"AccessToken"];
[[NSUserDefaults standardUserDefaults] setObject:fb.expirationDate forKey:@"ExpirationDate"];
}

// метод используется для проверки залогинен ли пользователь либо нет
- (BOOL)isSessionValid
{
return [fb isSessionValid];
}


Для работы на ранних версиях прошивок (у меня начная с 4.1) в класс Unity AppController.mm необходимо добавить метод:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [[socialNetworks facebook] handleOpenURL:url];
}

В следующем посте постараюсь описать, как без лишних диалогов оставлять публикации на стене пользователя. 

Комментариев нет:

Отправить комментарий