Dev (Back & Front)ARTIGO

Autenticação do Facebook no PhoneGap/Android

Texto original de Gregor Dorfbauer, disponível em http://blog.lagentz.com/phonegap/facebook-authentification-inside-phonegap-android/

?


Ao usar o PhoneGap, os arquivos da aplicação são acessados localmente
(file://assets/…). Portanto, o processo padrão de autenticação do Facebook
usando redirecionamento não funciona fora da caixa.

Este artigo mostra o uso do
PhoneGap-Facebook-Plugin. PhoneGap + Android suportam um Facebook-Plugin (de Jos Shepherd, muito obrigado!).
Simplesmente insira a fonte (Java + JavaScript) do Facebook-Plugin em seu
projeto PhoneGap. Eu tive que adaptar o arquivo FacebookAuth.java para suportar
mais capacidades (como publish_stream, …):

/**
* Display a new browser with the specified URL.
*
* @return "" if ok, or error message.
*/
public void authorize(final String appid) {
Log.d("PhoneGapLog", "authorize");
final FacebookAuth fba = this;
Runnable runnable = new Runnable() {
public void run() {
fba.mFb = new Facebook(appid);
fba.mFb.setPlugin(fba);
fba.mFb.authorize((Activity) fba.ctx,
new String[] {
"publish_stream",
"offline_access"},
new AuthorizeListener(fba));

};
};
this.ctx.runOnUiThread(runnable);
}

Note que você tem que registrar sua App-Signing-Key no Facebook (App-Settings)
– Mobile and Devices – Android. Senão isso apenas funcionará no Android
Simulator, mas não no dispositivo real.

Você consegue sua Key-Signature usando o seguinte comando:

var appId = 1234; // this is your facebook app id

window.plugins.facebook.authorize(appId, function(res) {
if(res.token !== undefined) {
// we have a token, save it (user has authenticated before)
} else {
// we have to call authorize
window.plugins.facebook.getAccess(function(res) {
if(res.token !== undefined) {
// we got a token (user has authenticated
// just in that moment)
}
});
}
});

Para implementações no iPhone, você precisa de uma
abordagem diferente, usando o ChildBrowser, outro PhoneGap-Plugin
(depurplecabbage/Jesse, obrigado!).

Matérias especiais e reportagens conduzidas internamente pela Redação iMasters. Acompanhe no Twitter @imasters e no Instagram/Threads @portalimasters

Ver perfil