terça-feira, 22 de abril de 2014

Delphi XE6 Android/iOS - Login com Facebook


Esta vídeo aula tem como objetivo ensinar como criar um projeto FireMonkey Android/iOS utilizando o delphi XE6 para logar utilizando a api do facebook/google... 



Espero que gostem, qualquer dúvida, sugestão ou comentário basta comentar aqui ou no meu blog. Abraços e bons estudos.

Link para mais informações de como utilizar a api: http://docwiki.embarcadero.com/RADStudio/XE5/en/REST_Client_Library#Accessing_Facebook_API

Link para criar o app no facebook: https://developers.facebook.com/apps

Pessoal, tem um erro em uma das funções.
Troque a função "Facebook_AccessTokenRedirect" por essa:
procedure TfrmPrincipal.Facebook_AccessTokenRedirect(const AURL: string;
var DoCloseWebView: boolean);
var
  LATPos: integer;
  LToken: string;
begin
  try
    LATPos := Pos('access_token=', AURL);
    if (LATPos > 0) then
    begin
      LToken := Copy(AURL, LATPos + 13, Length(AURL));
      if (Pos('&', LToken) > 0) then
      begin
        LToken := Copy(LToken, 1, Pos('&', LToken) - 1);
      end;

      FAccessToken := LToken;
      if (LToken <> '') then
      begin
        DoCloseWebView := True;
      end;
    end
    else
    begin
      LATPos := Pos('api_key=', AURL);
      if LATPos <= 0 then
      begin
        LATPos := Pos('access_denied', AURL);

        if (LATPos > 0) then
        begin
          //Acesso negado/usuário cancelou/usuário não permitiu o acesso
          FAccessToken := '';
          DoCloseWebView := True;
        end;
      end;
    end;
  except
    on E: Exception do
      ShowMessage(E.Message);
  END;
end;

22 comentários:

  1. Muchas Gracias por compartir sus conocimientos!!
    Saludos desde Argentina

    ResponderExcluir
    Respostas
    1. Muito obrigado. É bom saber que estou ajudando... Abraços e bons estudos.

      Excluir
  2. Você disponibiliza os fontes dos projetos em algum repositório?

    ResponderExcluir
    Respostas
    1. Depende, alguns projetos eu disponibilizo o fonte são raros mas alguns eu disponibilizo, não foi o caso desse.

      Quando disponibilizo informo na descrição do vídeo o link para download.

      Abraços

      Excluir
  3. Parabéns pelo trabalho. Está me ajudando muito.

    ResponderExcluir
  4. Primeiramente obrigado pelo vídeo! Estou com dúvida quanto ao access token. Após seguir o vídeo, parece que falta alguma coisa, pois a string 'access_token=' não é ecnotrada na url... Poderia explicar melhor como obter o access token do facebook? Desde já agradeço.

    ResponderExcluir
    Respostas
    1. Na descrição do vídeo tem uma alteração para ser feita no código, e mais um detalhe, só funciona no XE6. Abraços

      Excluir
  5. Obrigado por compartilhas seus conhecimentos, com suas dicas (fundamentais) conseguir logar no facebook, exatamente como vc descreveu, agora tenho uma duvida com relação ao logoff, pois mesmo removendo o aplicativo do face e removendo do iphone, quando rodo novamente o app ele continua logado. Como resolvo isso?

    ResponderExcluir
    Respostas
    1. Então, eu tentei e tentei e não consegui..
      Acabei desistindo de fazer o logout por falta de mais tempo para pesquisar mais.
      Tenta aí, da uma pesquisada na net e se conseguir, por favor me avise hem...
      Abraços e boa sorte.

      Excluir
  6. Bom dia Anderson,

    no Android funcionou perfeitamente, mas no iOS não estou conseguindo logar no Facebook. Aparece no WebBrowser "Success" com aquele security warning e não consegue pegar o access_token (a variável FAccessToken fica vazia). Já viu este problema? Alguma dica? Obrigado.

    ResponderExcluir
    Respostas
    1. Utilizou o código que esta aqui?
      No código do vídeo tinha um problema na função ".Facebook_AccessTokenRedirect" eu resolvi e coloquei aqui, se usou e não funcionou aí não sei o que pode ser.

      Nos meus testes funcionou perfeitamente.

      Excluir
    2. Sim, já atualizei o código. É estranho funcionar no Android e no iOS não. Será que o iOS codifica o string LURL de forma diferente? Você declara a variável FAccessToken em public do form principal?

      Excluir
    3. Então não sei. Como disse comigo funcionou, testei no iOS (simulador) e Android (simulador e dispositivo).

      Sim, declaro no public do form principal.
      Mas vc pode usar de outra forma se preferir, usei assim só pra facilitar.

      Se der, tente um componente de terceiro, já faz tudo:
      http://www.tmssoftware.com/site/tmsfmxcloudpack.asp

      Acessa todos os frameworks, parece ser bom.
      Abraços.

      Excluir
  7. Estou com problema na parte onde faz utilização do URIEncode. Ele marca este trecho informando que o URIEncode não foi identificado. Pode me ajudar?

    Obrigado.

    ResponderExcluir
  8. URIEncode ? de onde vem ? nem na embarcadero fala de onde vem isso.

    ResponderExcluir
  9. Boa tarde, cara só da este erro :
    The parameter app_id is required

    não consigo resolver de jeito nenhum, vc pode me ajudar por favor, obrigado.

    ResponderExcluir
  10. Ótimo tutorial, estou precisando implementar essa rotina, mas esta retornando o seguinte erro: "O domínio dessa URL não está incluído nos domínios do aplicativo. Para poder carregar essa URL, adicione todos os domínios e subdomínios ao campo Domínios do aplicativo nas configurações do aplicativo."

    Pode me ajudar?

    ResponderExcluir
  11. Também estou com este erro: "O domínio dessa URL não está incluído nos domínios do aplicativo. Para poder carregar essa URL, adicione todos os domínios e subdomínios ao campo Domínios do aplicativo nas configurações do aplicativo."

    ResponderExcluir
  12. Solução do erro acima: http://automessage.freshdesk.com/support/solutions/articles/6000013578-erro-o-url-informado-n%C3%A3o-%C3%A9-permitido-pela-configurac%C3%A3o-do-aplicativo-

    ResponderExcluir
  13. Obrigado Fernando Farah, ajudou muito.

    ResponderExcluir