2014-07-09 4 views
1

Je veux avoir une connexion facebook en utilisant le graphique Api parce que je veux user_birthday et user_location. Avant que j'utilise ce lien pour me connecter: http://www.androidhive.info/2012/03/android-facebook-connect-tutorial/facebook connexion en utilisant le graphique Api

Mais je n'obtenais pas d'informations supplémentaires comme la date de naissance et l'emplacement. Je m'approche donc du graphique Api. Mais n'a trouvé aucun tutoriel pour cela. J'ai essayé un lien et construit du code mais obtenais une session nulle. Je suis sûr que c'est un problème de mise en œuvre. Voici mon code:

 fbLogin.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      try { 
       openActiveSession(LoginScreenActivity.this, true, fbStatusCallback, Arrays.asList(
         new String[] { "email", "user_location", "user_birthday"}), savedInstanceState); 
      } 
      catch (Exception e) { 
       Log.i("exception", e.getMessage()); 
      }     
     Intent intent=new Intent(LoginScreenActivity.this,DealGaliTabActivity.class); 
     startActivity(intent); 

     } 
    }); 

    private Session openActiveSession(Activity activity, boolean allowLoginUI, 
       StatusCallback callback, List<String> permissions, Bundle savedInstanceState) { 
      OpenRequest openRequest = new OpenRequest(activity) 
      .setPermissions(permissions).setLoginBehavior(SessionLoginBehavior 
      .SSO_WITH_FALLBACK).setCallback(callback) 
      .setDefaultAudience(SessionDefaultAudience.FRIENDS); 

       Session session = Session.getActiveSession(); 
       Log.d("session", "" + session); 
       if (session == null) { 
        Log.d("sussion_Null", "" + savedInstanceState); 
        if (savedInstanceState != null) { 
         session = Session.restoreSession(this, null, fbStatusCallback, savedInstanceState); 
        } 
        session = Session.openActiveSessionFromCache(LoginScreenActivity.this); 
        Session.setActiveSession(session); 
        Log.d("sessionSet", "" + session); 

        if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED) || allowLoginUI) { 
         session.openForRead(openRequest); 
         return session; 
        } 
       } 
       return session; 
      } 
      @Override 
      public void onActivityResult(int requestCode, int resultCode, Intent data) { 
       super.onActivityResult(requestCode, resultCode, data); 
       Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
      } 

      private Session.StatusCallback fbStatusCallback = new Session.StatusCallback() { 
        public void call(Session session, SessionState state, Exception exception) { 
         if (state.isOpened()) { 
          Request.newMeRequest(session, new Request.GraphUserCallback() { 
           public void onCompleted(GraphUser user, Response response) { 
            if (response != null) { 
            Log.i("Graphresponse", response.toString()); 
             try{ 
              get_id = user.getId(); 
              get_name = user.getName(); 
              get_gender = (String) user.getProperty("gender"); 
              get_email = (String) user.getProperty("email"); 
              get_birthday = user.getBirthday(); 
              get_locale = (String) user.getProperty("locale"); 
              get_location = user.getLocation().toString(); 

             Log.d("GraphSelected", user.getId() + "; " + 
              user.getName() + "; " + 
              (String) user.getProperty("gender") + "; " +   
              (String) user.getProperty("email") + "; " + 
              user.getBirthday()+ "; " + 
              (String) user.getProperty("locale") + "; " + 
              user.getLocation()); 
             } catch(Exception e) { 
              e.printStackTrace(); 
              Log.d("GraphException", e.getMessage()); 
             } 

            } 
           } 
          }); 
         } 
        } 
       }; 

Je suis également ne reçois pas l'écran de facebook pour la première fois login..please me suggérer une solution.

Répondre

0

Je ne suis pas sûr si getBirthday(), getLocation() sont les méthodes valides, mais vous pouvez accéder directement à ces propriétés AS-

get_birthday = (String) user.getProperty("birthday"); 
get_location = (String) user.getProperty("location").getProperty("name"); 

Je suis aussi pas vraiment sûr user.getProperty("location").getProperty("name") est chose valable de le faire, en fait la réponse de l'emplacement est de la forme:

"location": { 
    "id": 123456789, 
    "name": "Blah" 
} 

Ceci devrait vous aider à l'anniversaire et à l'emplacement.


Aussi, vérifiez si vous pouvez voir l'autorisation bday et l'emplacement accordé ou non dans le app settings

1

ce que je want..I espère que ce serait utile pour les autres ...

public void readData(){ 
    if (Session.getActiveSession() == null 
       || Session.getActiveSession().isClosed()) { 
      Session.openActiveSession(this, true, new StatusCallback() { 

       @Override 
       public void call(Session session, SessionState state, 
         Exception exception) { 
        System.out.println("State= " + state); 

        if (session.isOpened()) { 

         System.out.println("Token=" + session.getAccessToken()); 
         if(session.getAccessToken() != null){ 
          sharedPrefernces(); 
         } 
          Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { 

          public void onCompleted(GraphUser user, Response response) { 
           if (response != null) { 
           Log.i("Graphresponse", response.toString()); 
            try{ 
             get_id = user.getId(); 
             get_name = user.getName(); 
             get_gender = (String) user.getProperty("gender"); 
             get_email = (String) user.getProperty("email"); 
             get_birthday = user.getBirthday(); 
             get_locale = (String) user.getProperty("locale"); 
             get_location = user.getLocation().toString(); 

             URL img_value = null; 
             img_value = new URL("http://graph.facebook.com/"+get_id+"/picture?type=large"); 
             mImage = BitmapFactory.decodeStream(img_value.openConnection().getInputStream()); 

            Log.d("GraphSelected", get_id + " " + 
             get_name + " " + 
             get_gender + " " +   
             get_email + " " + 
             get_birthday + " " + 
             get_locale + " " + 
             get_location); 
            } catch(Exception e) { 
             e.printStackTrace(); 
             Log.d("GraphException", e.getMessage()); 
            } 
           } 
          } 
         }); 
        } 
        if (exception != null) { 
         System.out.println("Some thing bad happened!"); 
         exception.printStackTrace(); 
        } 
       } 
      }); 
     } 
    } 
Questions connexes