Facebook sdk что это
Facebook SDK for Android
This documentation describes how to integrate your Android app with Facebook to build engaging social apps by using the Facebook SDK for Android. To learn more about using Facebook development tools, see App Development.
The current version of the Facebook SDK for Android is version 12.0.0 and requires the Android API 15. Code and samples for the Facebook SDK for Android are available on GitHub.
Beginning with SDK v13.0, set to release in early 2022, a Client Token will be required for all calls to the Graph API.
When you use the Facebook SDK for Android, follow the Facebook Open Source Terms of Use and Privacy Policy.
Common Uses
The Facebook SDK for Android gives you access to the following features:
Facebook Login — A secure and convenient way for people to log into your app or website by using their Facebook credentials.
Sharing — Enable people to post to Facebook from your app. People can share, send a message, and share to stories.
App Events — Understand people’s actions in your app and measure the effectiveness of your Mobile App Ads.
Graph API — Get data in and out of Facebook’s social graph, query data, post stories, upload photos and perform other tasks.
Advertise Your App — Drive installs of your app by using Mobile App Install Ads. Increase engagement with your app by using Mobile App Engagement Ads. Find your target audience with Custom Audiences for Mobile Apps.
Documentation Contents
Component SDKs
Describes the component SDKs of the Facebook SDK for Android.
Getting Started
A short tutorial to get you up and running.
Calling the Graph API from Android
Learn how to call the Facebook Graph API from your Android app.
FAQ & Troubleshooting
Frequently asked questions and troubleshooting information for the Facebook SDK for Android.
Changelog
Changelog and release notes for the Facebook SDK for Android.
Upgrade Guide
Instructions for upgrading your version of the Facebook SDK for Android.
Devices
Considerations when you use the Facebook SDK for Android with Android TV and Amazon’s Fire TV.
Reference
Component and endpoint references.
Downloads
Instructions to reference the Facebook SDK for Android in your app and links to download old versions.
Deprecated
Resources for old versions of the Facebook SDK for Android.
Начало работы с Facebook SDK для iOS
Сегодня важным элементом приложения является возможность сообщить вашим друзьям, коллегам, а также всему миру, что вы делаете, где и почему. В этом нам помогают социальные сети. Сети в свою очередь стараются облегчить труд программиста и создают свои SDK. Сейчас мы рассмотрим Facebook SDK для платформы iOS.
Когда я начинал разбираться с Facebook SDK примерно год назад, еще была версия, которая называлась facebook-iphone-sdk. Она и сейчас работает. Но я стал замечать странные сбои в приложении и решил, проверить не вышло ли что-то нового. Оказалось этот проект законсервирован, а разработчикам рекомендуется теперь использовать facebook-ios-sdk, где как утверждалось все еще проще. И как оказалось, не соврали.
Пользователи Xcode 4.0 могут напрямую скачать SDK из среды разработки. Для этого открываем Organizer, идем в раздел Repositories, и после плюсика в нижнем левом углу выбираем Checkout or Clone Repository.
В директории Sample находится демо-приложение, которое мы и будем немного дорабатывать и по пути разбираться с ним. Но с ним сразу же возникла проблема при его попытке запустить. Какие-то параметры проекта мешают его компиляции в новом Xcode4 и выдается ошибка о неверной архитектуре. Надо зайти в параметры проекта и просто поубивать все в разделе Архитектура и затем у проекта восстановить только два параметра:
Architectures — Standard (arms6, arms7)
BaseSDK — Latest iOS (iOS 4.3)
Если не получилось, то ниже я прилагаю рабочий проект.
После этого наш проект начинает строится, запускается в симуляторе и сразу же «вылетает», сигнализирую в консоль — «2011-03-29 11:49:02.301 DemoApp[3098:207] missing app id!». Все потому, что мы не указали id нашего приложения.
Идем на http://www.facebook.com/developers/ и либо выбираем ваше уже существующие приложение или нажимаем кнопочку «+ Создать новое приложение». После несложной регистрации система сообщит вам кроме всего прочего «ID приложения». Он и только он нам и нужен в новой версии SDK. В файле DemoAppViewController.m мы можем увидеть такой текст:
// Your Facebook APP Id must be set before running this example
// See www.facebook.com/developers/createapp.php
// Also, your application must bind to the fb[app_id]:// URL
// scheme (substitue [app_id] for your real Facebook app id).
static NSString* kAppId = nil;
Заменяем nil на наш id приложения. Не забываем, что это строка. Пусть ДЛЯ ПРИМЕРА наш id будет 11111111111
static NSString* kAppId = @»11111111111″;
Идем в конфигурационный файл Resources/DemoApp-Info.plist и заменяем значение fb[your-app-id] на картинке на наше fb11111111111 — причем скобки вас не должны смущать, ставить значение нужно без них!
Все! Теперь мы получили полностью работающее приложение. Можем запускать и изучать, что оно умеет. Сразу после запуска видим приглашение войти. После набора емейла и пароля появляется экран, интересующийся у нас, позволяем ли мы этому приложению получить доступ к нашим данным. Нажимаем Allow и попадаем в очень минималистический дизайн программы. На этом остановимся, чтобы разобраться как это все сейчас работает.
Для начала взглянем на XIB файл.
Он предельно прост — 5 кнопочек. При запуске приложения показывается только FBLoginButton — она у нас управляется одноименным классом, который добавлен в проект. Взглянем на метод viewDidLoad
/**
* Set initial view
*/
(void)viewDidLoad <
// инициализируем facebook
_facebook = [[Facebook alloc] initWithAppId:kAppId];
[self.label setText:@»Please log in»];
// скрываем все кнопочки крочем логина
_getUserInfoButton.hidden = YES;
_getPublicInfoButton.hidden = YES;
_publishButton.hidden = YES;
_uploadPhotoButton.hidden = YES;
_fbButton.isLoggedIn = NO;
[_fbButton updateImage];
>
Заметьте, как просто теперь инициализируется объект класса Facebook — нужно id приложения и все.
_facebook = [[Facebook alloc] initWithAppId:kAppId];
при нажатии кнопочки вызывается метод:
/**
* Called on a login/logout button click.
*/
— (IBAction)fbButtonClick:(id)sender <
if (_fbButton.isLoggedIn) <
[self logout];
> else <
[self login];
>
>
И если мы еще не вошли, то вызываем метод:
/**
* Show the authorization dialog.
*/
— (void)login <
[_facebook authorize:_permissions delegate:self];
>
, где _permissions — это настройки прав на различные действия в facebook. В нашем примере мы просим права при инициализации нашего контроллера
— (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil <
.
_permissions = [[NSArray arrayWithObjects:
@»read_stream», @»offline_access»,nil] retain];
>
согласно документации тут — http://developers.facebook.com/docs/authentication/permissions/, read_stream — это право читать ленту, а offline_access — это возможность вашему приложения оставаться присоединенным гораздо дольше. Без этого права токены на доступ сгорят достаточно быстро. Мы вернемся к этой теме чуть позже. Кстати, именно подтверждение этих прав у нас и запрашивалось, когда мы нажали кнопку Allow выше.
Второй важный момент здесь, что мы указали себя, наш класс, (self) как делегата и будем получать от объекта facebook сообщения по мере их поступления.
Еще один очень важный момент связан с тем, как же мы возвращаемся в наше приложение после авторизации. Помните, мы вносили какие-то параметры выше в файл Resources/DemoApp-Info.plist. И если мы присмотримся к файлу DemoAppAppDelegate.m то увидим там маленький метод, который и ответственен за возврат в наше приложение.
— (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url <
return [[controller facebook] handleOpenURL:url];
>
Таким образом, подытожим. Если вы будете делать приложение с нуля, то для успешной работы SDK вам обязательно надо
1. Указать app ID в коде
2. Указать app ID в файле параметров вашего приложения
3. В *AppDelegate.m вашего приложения реализовать метод
— (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url <
return [[controller facebook] handleOpenURL:url];
>
Без последних двух пунктов вы не будете возвращаться в ваше приложение после окна авторизации.
В зависимости от того с чем вы вернулись в приложение, вызывается один из трех методов, которые мы прописали, как делегат.
/**
* Вызывается, если мы успешно авторизовались.
*/
— (void)fbDidLogin <
[self.label setText:@»logged in»];
_getUserInfoButton.hidden = NO;
_getPublicInfoButton.hidden = NO;
_publishButton.hidden = NO;
_uploadPhotoButton.hidden = NO;
_fbButton.isLoggedIn = YES;
[_fbButton updateImage];
>
/**
* Вызывается, если мы отказались от авторизации.
*/
-(void)fbDidNotLogin:(BOOL)cancelled <
NSLog(@»did not login»);
>
/**
* Вызывается, если мы сделали logout на фейсбуке.
*/
— (void)fbDidLogout <
[self.label setText:@»Please log in»];
_getUserInfoButton.hidden = YES;
_getPublicInfoButton.hidden = YES;
_publishButton.hidden = YES;
_uploadPhotoButton.hidden = YES;
_fbButton.isLoggedIn = NO;
[_fbButton updateImage];
>
Так как мы успешно авторизовались, все наши остальные кнопки появились на экране. Можете сами изучить, что они делают; мы подробнее вернемся к ним позже. Например, кнопка «Call Graph API» покажет вам ваше имя и фамилию, а кнопка «Call REST API» покажется вам имя и фамилию человека в а именно Mike Zuckerberg. Попытки узнать, кто же скрывается под не увенчались успехом и приложение крешнулось. Так что, желающие могут изучить этот вопрос самостоятельно. И вот пока я писал последний абзац мне пришлось как минимум несколько раз снова жать кнопку Login. Что же можно сделать, чтобы один раз авторизовавшись в приложении, не надо было входить на facebook снова. Сейчас этим и займемся. Все что нам для этого надо — это сохранить в NSUserDefaults значения двух переменных. viewDidLoad у нас примет вот такой вид:
— (void)viewDidLoad <
_facebook = [[Facebook alloc] initWithAppId:kAppId];
_facebook.accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@»AccessToken»];
_facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@»ExpirationDate»];
if ([_facebook isSessionValid] == NO) <
[self.label setText:@»Please log in»];
_getUserInfoButton.hidden = YES;
_getPublicInfoButton.hidden = YES;
_publishButton.hidden = YES;
_uploadPhotoButton.hidden = YES;
_fbButton.isLoggedIn = NO;
[_fbButton updateImage];
> else <
[self.label setText:@»logged in»];
_getUserInfoButton.hidden = NO;
_getPublicInfoButton.hidden = NO;
_publishButton.hidden = NO;
_uploadPhotoButton.hidden = NO;
_fbButton.isLoggedIn = YES;
[_fbButton updateImage];
>
>
мы проверяем валидна ли (isSessionValid) сессия с параметрами accessToken и expirationDate, сохраненных в нашем NSUserDefaults. Если да, то мы уже залогинены и можем выполнять дальнейшие действия.
в методы fbDidLogin и fbDidLogout мы добавим соответственно
fbDidLogin — записываем параметры
[[NSUserDefaults standardUserDefaults] setObject:self.facebook.accessToken forKey:@»AccessToken»];
[[NSUserDefaults standardUserDefaults] setObject:self.facebook.expirationDate forKey:@»ExpirationDate»];
fbDidLogout — обнуляем их
[[NSUserDefaults standardUserDefaults] setObject:nil forKey:@»AccessToken»];
[[NSUserDefaults standardUserDefaults] setObject:nil forKey:@»ExpirationDate»];
Запускаем нашем приложение, авторизуемся, проверяем нашем имя — все отлично. Не нажимая Logout прекращаем наше приложение и снова его запускаем — видим, что мы все еще на фейсбуке — проверяем наше имя — все работает. Напомню, что именно для этого мы в правах просили себе право @«offline_access». Этот вариант проекта можно будет скачать ниже.
И в заключение сегодняшней статьи давайте посмотрим как работает механизм запросов и обработка ответов.
Facebook настойчиво просит нас использовать GRAPH API, а не использовать старые REST API, который тем не менее все еще поддерживается. На этой странице (http://developers.facebook.com/docs/reference/api/) мы можем видеть примеры использования GRAPH API и посмотреть вывод информации для вас. В демо-программе facebook использует такой запрос:
— (IBAction)getUserInfo:(id)sender <
[_facebook requestWithGraphPath:@»me» andDelegate:self];
>
для примера они показывают какой вывод будет при таком запросе
graph.facebook.com/btaylor
Это означает, что мы получим в ответ NSDictionary и сможем получить наше полное имя по ключу «name». После того, как мы отправили запрос и назначили получателя ответа, нам надо сделать методы, отвечающие за прием ответа. За прием неразобранного (raw) ответа отвечает
— (void)request:(FBRequest *)request didReceiveResponse:(NSURLResponse *)response <
NSLog(@»received response»);
>
а разобранный ответ принимает:
— (void)request:(FBRequest *)request didLoad:(id)result <
if ([result isKindOfClass:[NSArray class]]) <
result = [result objectAtIndex:0];
>
if ([result objectForKey:@»owner»]) <
[self.label setText:@»Photo upload Success»];
> else <
[self.label setText:[result objectForKey:@»name»]];
>
>;
Ответ (result) может быть числом, строкой, массивом или dictionary. Если нам пришел ответ сразу как NSArray — значит нам пришел сразу несколько ответов и надо разбивать их по отдельным ответам. В данном случае когда мы попросили рассказать, кто же мы (me) такие, приходит ответ в NSDictionary и там нет ключа owner, и следовательно вызывается эта строчка:
[self.label setText:[result objectForKey:@»name»]];
Давайте все усложним. Например, я хочу получить в приложении информацию о том, что же любит пользователь. Изменим запрос согласно документации на:
— (IBAction)getUserInfo:(id)sender <
[_facebook requestWithGraphPath:@»me/likes» andDelegate:self];
>
если вы посмотрите на сайте фейсбука вывод этого запроса, то увидите, что ответом будем — NSDictionary всего с одним ключом data. Ему будет соответствовать массив объектов NSDictionary c ключами «name»,«category»,«id»,«created_time». Важно также не забыть в запрашиваемые права добавить «user_likes», иначе в ответ нам вернется пустой объект NSDictionary!
Чтобы принять такой ответ, перепишем наш метод
— (void)request:(FBRequest *)request didLoad:(id)result <
if ([result isKindOfClass:[NSArray class]]) <
result = [result objectAtIndex:0];
>
if ([result objectForKey:@»owner»]) <
[self.label setText:@»Photo upload Success»];
> else if ([result objectForKey:@»data»]) <
NSArray *likes = [result objectForKey:@»data»];
NSString *text=@»You don’t like Steve»;
for (NSDictionary* mylike in likes) <
NSString *mylikeName = [mylike objectForKey:@»name»];
if ([mylikeName isEqualToString:@»Steve Jobs»]) <
text=@»You like Steve»;
break;
>
>
[self.label setText:text];
>
>;
Если мы получили ответ в виде NSDictionary, и там есть значение по ключу «data», то мы проходим по этому массиву, заглядывая в каждый объект и проверяем, нет ли среди страничек facebook, которые нравятся пользователю, странички с именем Steve Jobs. У меня такая оказалась, так что приложение выдало мне «You like Steve».
На этом я остановлюсь пока, хотя хотелось бы еще рассказать, какие интересные опции есть для формирования сообщения на стену из приложения. Но видимо это будет в следующий раз.
Проект оргинальный, но с поправками в свойствах, чтобы запустился в Xcode4
Проект с добавленной возможностью сохранять сессию
Проект с измененным запросом
Только вам в них надо будет поставить свои appID 🙂
ps и еще я люблю форматирование кода на Хабре 🙂
Getting Started with the Facebook SDK for Android
This documentation explains how to get started integrating your Android app with Facebook by using the Facebook SDK for Android. The current version of the Facebook SDK for Android is version 12.0.0 and requires the Android API 15. For more information about versions and features, see Facebook SDK for Android.
Beginning with SDK v13.0, set to release in early 2022, a Client Token will be required for all calls to the Graph API.
You can set up your app to use the Facebook SDK for Android in the following ways:
Quick Start
To get a Facebook App ID, configure your app’s settings, and import the Facebook SDK for Android, click on the button below and follow the instructions.
Android Studio Setup
To use the Facebook SDK in an Android Studio project, add the SDK as a build dependency and import the SDK.
When you use the Facebook SDK, some events in your app are automatically logged and collected unless you disable automatic event logging. For details about what information is collected and how to disable automatic event logging, see Automatic App Event Logging.
Add Your Facebook App ID and Client Token
Add your Facebook App ID and Client Token to your project’s strings file and update your Android manifest:
1. Open your /app/res/values/strings.xml file.
2. Add a string element with the name attribute facebook_app_id and value as your Facebook App ID to the file. For example
3. Open /app/manifests/AndroidManifest.xml
4. Add a uses-permission element to the manifest:
5. Add a meta-data element to the application element:
Sending Images or Videos
If you’re sharing links, images or video via the Facebook for Android app, you also need to declare the FacebookContentProvider in the manifest.
Running Sample Apps
The following samples come with the Facebook SDK for Android:
You can experiment with samples by importing the Facebook SDK into an Android Studio project. The samples have a project dependency rather than a central repository dependency via maven central or jcenter. This is so that when a local copy of the SDK gets updates, the samples reflect the changes.
To run samples apps quickly, you can generate key hashes for your development environments. Add these to your Facebook developer profile for the sample apps. Keytool, for generating the key hashes, is included with the Java SE Development Kit (JDK) that you installed as part of setting up your development environment. OpenSSL is available for download from OpenSSL.
On Windows, you need the following:
Run the following command in a command prompt in the Java SDK folder. This generates a 28 character string.
Go to the Facebook Developer site. Log into Facebook and, using the dropdown menu in the top-right, go to Developer Settings:
In your developer settings, select Sample App from the menu, and add and save your key hash into your profile:
You can add multiple key hashes if you develop with multiple machines.
Create a Development Key Hash
Facebook uses the key hash to authenticate interactions between your app and the Facebook app. If you run apps that use Facebook Login, you need to add your Android development key hash to your Facebook developer profile.
For the version of your app that you release to you also need to generate and set a Release Key Hash.
Create a Release Key Hash
To authenticate the exchange of information between your app and the Facebook, you need to generate a release key hash and add this to the Android settings within your Facebook App ID. Without this, your Facebook integration may not work properly when you release your app to the store.
In a previous step, you should have updated your Facebook Developer Settings with the key hashes for your development environments.
When publishing your app, it is typically signed with a different signature to your development environment. Therefore, you want to make sure you create a Release Key Hash and add this to the Android settings for Facebook App ID.
To generate a hash of your release key, run the following command on Mac or Windows substituting your release key alias and the path to your keystore.
On Windows, you need the following:
Run the following command in a command prompt in the Java SDK folder:
Make sure to use the password that you set when you first created the release key.
This command should generate a 28 characher string. Copy and paste this Release Key Hash into your Facebook App ID’s Android settings.
You should also check that your Facebook App ID’s Android setting also contain the correct package name and main activity class for your Android package.
Use the Facebook SDK for Android with Maven
You can declare the Maven dependency with the latest available version of the Facebook SDK for Android.
Troubleshooting Sample Apps
If you have a problem running a sample app, it may be related to the key hash. You may see one of the following scenarios:
Check your key hash and you can make sure you use the correct key hash. I
You can also manually modify the sample code to use the right key hash. For example in HelloFacebookSampleActivity class make a temporary change to the onCreate() :
Save your changes and re-run the sample. Check your logcat output for a message similar to this:
Save the key hash in your developer profile. Re-run the samples and verify that you can log in successfully.
Facebook SDK for iOS
See the Changelog or Upgrade Guide for more information. Includes Facebook frameworks.
Get Started on iOS
Basics for iOS
SDK Reference Docs
API Reference Docs
To make your app compatible with the latest iOS, be sure to use the latest Facebook SDKs for iOS.
If you use SPM or CocoaPods to integrate the Facebook SDK, see the Upgrade Guide for information on how to update your app. You can also download the latest version of the Facebook iOS SDK, integrate it into your app, and recompile.
Beginning with SDK v13.0, set to release in early 2022, a Client Token will be required for all calls to the Graph API.
Components
The Facebook SDK for iOS contains component SDKs that you can connect to individually.
Features of the iOS SDK
Drive installs with Mobile App Install Ads. Increase engagement with Mobile App Engagement Ads. Find your target audience with Custom Audiences for Mobile Apps.
Login
A secure and convenient way for people to log into your app or website using Facebook.
App Events
Understand people’s actions in your app and measure the effectiveness of your Mobile App Ads.
Share
Allow people using your app to share, send a message, or like content. They can also share Custom Stories with Open Graph.
Graph API
Get data in and out of Facebook’s social graph, query data, post stories, upload photos and perform other tasks.
App Store Connect Requirements
To provide functionality within the Facebook iOS SDK, we may receive and process certain contact, location, identifier, and device information associated with Facebook users and their use of your application. The information we receive depends on what SDK features third party applications use. Please visit the Facebook for Developers blogpost for more information about these SDK features.
Related SDKs
Download and integrate the Audience Network SDK for iOS to monetize your app with Facebook ads. Audience Network includes:
Related Resources
FAQ and Troubleshooting
Common questions and troubleshooting tips.
Error Handling
Build a robust and reliable app.
Terms of Use
Terms of use for Facebook’s open source SDKs
Privacy Policy
Privacy policy for Facebook’s open source SDKs