Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Pegar email do usuario Facebook Api 3.0

Ricardo,


Não sei se você já resolveu seu problema, mas seguem alguns link's:


Já sobre a questão do email você teria que setar a permissão especifica para pegar o email e utilizar a seguinte request:
Request request = Request.newMeRequest( getSession(), new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if ( user != null ) {
String email = (String)user.getProperty("email");
textViewEmail.setText(email);
}
}
});
request.executeAsync();

 Fiz um exemplo completo, dá uma olhada pra você dá uma olhada:

Você também poderia utilizar em vez do openSession() poderia utilizar direto o openSessionForPublish e com isso não ter de pedir autorização duas vezes, mas eu li em algum canto que não é recomendável por algum razão que eu também não lembro.

[]'s

2012/11/27 Ricardo Cardoso <rick.duk@gmail.com>
Estou usando a api do facebook 3.0 na minha aplicação, porém não estou conseguindo pegar o email do usuario...
procurei pelo internet e achei o seguinte 


Porém quando uso a linha que ele pede 
  session.openForRead(new Session.OpenRequest(this).setPermissions(Arrays.asList("email")));
  da o seguinte erro:
11-27 03:54:24.395: E/AndroidRuntime(2006): java.lang.UnsupportedOperationException: Session: an attempt was made to open a session that has a pending request.  

o meu createComplete está assim:

@Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_marca_foto);

        

        

        

        Settings.addLoggingBehavior(LoggingBehaviors.INCLUDE_ACCESS_TOKENS);

        

        Session.openActiveSession(this, true, statusCallback);

        Session session = Session.getActiveSession();

        if (session == null) {

            if (savedInstanceState != null) {

                session = Session.restoreSession(this, null, statusCallback, savedInstanceState);

            }

            if (session == null) {

                session = new Session(this);

            }

            Session.setActiveSession(session);

            if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {

            }

        }


private class SessionStatusCallback implements Session.StatusCallback {

        @Override

        public void call(Session session, SessionState state, Exception exception) {

            

        

        usuario.setAccess_token(session.getAccessToken());

        

        

        if(state.isOpened()){

            Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {

@Override

public void onCompleted(GraphUser user, Response response) {

usuario.setUserIdFacebook(user.getId());

usuario.setUsername(user.getUsername());

}

});

            Request.executeBatchAsync(request);

            }

        

        

        }

    }

Eu sei que parece que estou tentando abrir duas sessões, mas como fazer isso sem dar erro?

Por favor alguém pode me da uma dica?

--
 
 



--
"Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."- Linus Torvalds

Bruno Furtado
Graduando em Engenharia de Software - UFC

--
 
 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário