Este documento explica como integrar o seu app Android ao Facebook usando o SDK do Facebook para Android. A versão atual do SDK do Facebook para Android é a 12.0.0, que exige a API do Android 15. Para saber mais sobre versões e recursos, consulte SDK do Facebook para Android.
Quando você usa o SDK do Facebook, alguns eventos no aplicativo são registrados e coletados automaticamente para o Facebook Analytics, a menos que desative o log de eventos automático. Para saber mais sobre as informações que são coletadas e como desativar o log de eventos automático, acesse Log automático de eventos do aplicativo.
Configure o seu app para usar o SDK do Facebook para Android de uma destas maneiras:
Para obter um ID do app do Facebook, configure o seu app e importe o SDK do Facebook para Android. Clique no botão abaixo e siga as instruções.
Início rápido para AndroidDesde a versão 13.0.0, os apps criados com o SDK do Facebook para Android adicionam automaticamente a permissão de ID de publicidade ao seu app. Para saber mais, consulte ID de publicidade na Ajuda do Play Console.
Em alguns casos, é recomendado recusar a permissão de ID de publicidade no app. Por exemplo, caso os seus clientes sejam crianças e famílias, essa permissão talvez não seja relevante. Para excluir a permissão de ID de publicidade do app, siga as instruções descritas mais abaixo neste documento.
Adicione o SDK do Facebook como uma dependência de compilação e importe-o para usá-lo em um projeto do Android Studio.
Acesse Android Studio | New Project | Minimum SDK.
Selecione a versão API 15: Android 4.0.3 (IceCreamSandwich) ou mais recente e crie o novo projeto.
Abra o arquivo Gradle Scripts | build.gradle (Project: <your_project>)
e adicione o código a seguir:
mavenCentral()
Salve e feche o arquivo build.gradle (Project: <your_project>)
.
Abra o arquivo Gradle Scripts | build.gradle (Module: app)
e adicione este código à seção dependencies
:
implementation 'com.facebook.android:facebook-android-sdk:latest.release'
Salve e feche o arquivo build.gradle (Module: app)
.
Crie o projeto. Agora, é possível importar com.facebook.FacebookSdk
para o app.
Adicione o ID do app e o token de cliente ao arquivo de strings e atualize o arquivo de manifesto. Para isso, siga estas instruções:
Abra o arquivo /app/res/values/strings.xml
no projeto do app.
Adicione os elementos string
com os nomes facebook_app_id
e facebook_client_token
e defina os valores do ID do app e token de cliente. Por exemplo, se o ID do app for 1234
e o token do cliente for 56789
, o seu código terá esta aparência:
<string name="facebook_app_id">1234</string><string name="facebook_client_token">56789</string>
Abra o arquivo /app/manifests/AndroidManifest.xml
no projeto do app.
Adicione elementos meta-data
ao elemento application
para o ID do app e o token do cliente:
<application android:label="@string/app_name" ...>
...
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/><meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
...
</application>
Adicione um elemento uses-permission
ao manifesto depois do elemento application
:
<uses-permission android:name="android.permission.INTERNET"/>
(Opcional) Para recusar a permissão de ID de publicidade, adicione um elemento uses-permission
ao manifesto depois do elemento application
:
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
Crie o projeto.
Se você compartilha links, imagens ou vídeos do seu app, declare a autoridade FacebookContentProvider
no manifesto. Para isso, siga estas instruções:
Abra o arquivo /app/manifests/AndroidManifest.xml
no projeto do app.
Adicione o elemento provider
ao manifesto para a autoridade FacebookContentProvider
. Inclua o ID do app no final do valor authorities
. Por exemplo, se o ID do app for 1234
, a declaração será semelhante a:
<provider android:authorities="com.facebook.app.FacebookContentProvider1234"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" />
Crie o projeto.
Os exemplos abaixo vêm com o SDK do Facebook para Android:
Teste os exemplos importando o SDK do Facebook em um projeto do Android Studio. Os exemplos têm uma dependência de projeto, em vez de uma dependência de repositório central via Maven Central ou JCenter. Ou seja, quando uma cópia local do SDK é atualizada, os exemplos refletem essas alterações.
Para executar exemplos de app rapidamente, gere hashes de chave para os seus ambientes de desenvolvimento. Adicione-as ao seu perfil de desenvolvedor do Facebook nos exemplos de app. A Keytool, usada para gerar os hashes de chave, está incluída no Java SE Development Kit (JDK) que você instalou como parte da configuração do seu ambiente de desenvolvimento. O OpenSSL está disponível para baixar em OpenSSL.
No OS X, execute:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
No Windows, você precisa do seguinte:
keytool
) do Kit de desenvolvimento JavaInsira o código abaixo em um prompt de comando da pasta SDK para Java. Essa ação gera uma string com 28 caracteres.
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
Acesse o site Meta for Developers. Entre no Facebook e acesse Configurações do desenvolvedor no menu suspenso no canto superior direito:
Selecione Exemplo de aplicativo no menu para adicionar e salvar o hash de chave ao seu perfil:
Se você estiver desenvolvendo em diferentes máquinas, será possível adicionar múltiplos hashes de chave.
Agora, é possível compilar e executar todos os exemplos, inclusive os que usam o Login do Facebook.
O Facebook usa o hash de chave para autenticar as interações entre o seu app e o app do Facebook. Se você tem apps que usam o Login do Facebook, será necessário adicionar o hash de chave do Android ao seu perfil de desenvolvedor do Facebook.
Também será necessário gerar e definir um hash de chave de versão para o app que você lança para você.
No OS X e no Windows, é possível gerar um hash de chave ou usar o valor retornado por Settings.getApplicationSignature(Context)
. Para mais instruções, veja Executar exemplos de aplicativo.
Para autenticar a troca de informações entre o seu app e o Facebook, é necessário gerar um hash de chave de versão e adicioná-lo às configurações do Android do ID do app do Facebook. Sem essa informação, a sua integração com o Facebook pode não funcionar de forma adequada quando você lançar o app na App Store.
Em uma etapa anterior, você precisa atualizar as suas configurações de desenvolvedor do Facebook com os hashes de chave dos ambientes de desenvolvimento.
Quando você publica o seu app, ele normalmente tem uma assinatura diferente do seu ambiente de desenvolvimento. Por isso, crie um hash de chave de versão e adicione-o às configurações do Android do ID do app do Facebook.
Para gerar um hash da chave de versão, execute o seguinte comando no Mac ou Windows substituindo o alias de chave de versão e o caminho para o keystore.
No Mac OS, execute:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
No Windows, você precisa do seguinte:
keytool
) do Kit de desenvolvimento JavaExecute o código abaixo em um prompt de comando da pasta SDK para Java:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | PATH_TO_OPENSSL_LIBRARY\bin\openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64
Use a senha que você definiu quando criou pela primeira vez a chave de versão.
Essa ação gera uma string de 28 caracteres. Copie e cole esse hash de chave de lançamento nas configurações do Android do número de identificação do app do Facebook.
Verifique também se as configurações do Android do ID do app do Facebook têm o nome correto do pacote e a classe da atividade principal do seu pacote Android.
Declare a dependência do Maven com a versão mais recente do SDK do Facebook para Android.
<dependency> <groupId>com.facebook.android</groupId> <artifactId>facebook-android-sdk</artifactId> <version>PUT_LATEST_VERSION_HERE</version> </dependency>
Caso você tenha algum problema ao executar um exemplo de app, isso pode estar relacionado ao hash de chave. Talvez você veja um destes cenários:
12-20 10:23:24.507: W/fb4a:fb:OrcaServiceQueue(504): com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id
Verifique se você está usando o hash de chave correto. I
Também é possível alterar manualmente a amostra de código para usar o hash de chave correto. Por exemplo, na classe HelloFacebookSampleActivity
, faça uma alteração temporária em onCreate()
:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Add code to print out the key hash try { PackageInfo info = getPackageManager().getPackageInfo( "com.facebook.samples.hellofacebook", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } ...
Salve as alterações e execute novamente a amostra. Busque na saída do logcat uma mensagem semelhante a esta:
12-20 10:47:37.747: D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=
Salve o hash de chave no seu perfil de desenvolvedor. Execute novamente as amostras e verifique se você consegue entrar.