2014-12-04 1 views
0

Я использую график api в своем приложении для Android для подключения к facebook.Now, что я делаю, создает экземпляр для моего класса Facebook и каждый раз вызывает метод входа из основного действия. Если один раз войти в систему с помощью приложения , и в следующий раз, когда пользователь открывает приложение, оно должно непосредственно Войти с использованием предыдущей активной facebook session..How сделать это? Sombody, пожалуйста, помогите ...Как обеспечить автоматический вход в Facebook в Android-приложении, если пользователь выполнил вход в систему?

Войти метод нажатия кнопки

public void onBtnClicked(View v){ 
      if(v.getId() == R.id.btnLogin) 
      { 

       FacebookClass na = new FacebookClass(this); 
       na.login(); 
      } 
} 

этого мой метод регистрации

public void login() 
{ 
    // start Facebook Login 
    Session.openActiveSession(mContext, true, new Session.StatusCallback() { 

     @Override 
     public void call(Session session, SessionState state, 
       Exception exception) { 
      if (session.isOpened()) { 


         sessionState = true; 


       Toast.makeText(mContext, "Access token :" + session.getAccessToken() + "\n" +"Expires at "+session.getExpirationDate().toLocaleString(), Toast.LENGTH_LONG).show(); 

         Log.i("sessionToken", session.getAccessToken()); 
         Log.i("sessionTokenDueDate", session.getExpirationDate().toLocaleString()); 

        access_token =session.getAccessToken(); 

        pref = mContext.getPreferences(0); 
        edt = pref.edit(); 

         Editor prefsEditor = pref.edit(); 
         edt.putString("Access token", access_token); 
         edt.commit(); 

       /** 
       * getting user's name and location 
       */ 

       // make request to the /me API 
        Request.newMeRequest(session, new Request.GraphUserCallback() { 

        // callback after Graph API response with user object 
        @Override 
        public void onCompleted(GraphUser user, Response response) { 
         if (user != null) 
         { 
           dispname = user.getName(); 
           id = user.getId(); 

           Object userLocation = user.getLocation(); 

           Log.i("Profile information", ""+response); 

          String strLocation = (userLocation != null)? ((GraphObject) userLocation).getProperty("name").toString() : "No location found"; 


           //location.setText("Lives in " + strLocation + "!"); 

           disploc = strLocation; 

           edt.putString("Username", dispname); 
           edt.putString("Location", disploc); 
           edt.commit(); 

          ((MainActivity)mContext).dispatchInformations(dispname,disploc); 


           } 
        } 
        }).executeAsync(); 



        /** 
        * Getting user's profile picture 
        */ 
        Bundle params = new Bundle(); 
        params.putBoolean("redirect", false); 
        params.putString("type", "normal"); 
        params.putString("height", "200"); 
        params.putString("width", "200"); 
        new Request(
          Session.getActiveSession(), 
          "/me/picture", 
          params, 
          HttpMethod.GET, 
          new Request.Callback() { 
           public void onCompleted(Response response) { 
            /* handle the result */ 
            Log.i("Profile pic", ""+response); 
            GraphObject graph=response.getGraphObject(); 
            JSONObject jsonObj=graph.getInnerJSONObject(); 
            JSONObject object; 
            String imageURL; 



            try { 
             object = jsonObj.getJSONObject("data"); 
              imageURL=object.getString("url"); 

              new DownloadImageTask().execute(imageURL); 


            } catch (JSONException e) { 
             // TODO Auto-generated catch block 
             e.printStackTrace(); 
            } 

           } 
          } 
         ).executeAsync(); 

      } 





} 

    private boolean isSubsetOf(Collection<String> subset, 
      Collection<String> superset) { 
     for (String string : subset) { 
      if (!superset.contains(string)) { 
       return false; 
      } 
     } 
     return true; 

} 

}); 

} 
+0

на первый раз в систему установить в sharedpref. а затем проверьте, когда вы придете снова, если доступны значения sharedpref. если да, то выполните логин facebook с этими значениями. – Riser

ответ

0

Вы можете проверить с Session.getActiveSession();

Например Используйте это в onCompleted() метод

Session facebooksession = Session.getActiveSession(); 
if(facebooksession != null) { 
//Second time login 
} 
else{ 
//First time login 
} 
+0

Я всегда получаю null :(но его вошел ... как это исправить? Есть ли что-то, что связано с onActivityResult ?? помогите – Nevaeh

+0

@Nevaeh Вы добавили мой код внутри 'onCompleted()' метод? Если пользователь впервые зарегистрировался в вашем приложении, тогда он будет пустым, если тот же пользователь войдет в приложение во второй раз, тогда он не будет пустым –

+0

. Я объясню. У меня есть класс для входа в facebook и получение деталей. Я написал метод onActivityResult в своем основном действии. Первый фрагмент кода, о котором идет речь, относится к моей основной деятельности, а во-вторых, к моей facebook class.so, моя проблема заключается в том, что я хочу проверить, есть ли какой-либо активный сеанс, когда приложение запустилось. Если да, то я хочу автоматически отображать имя и картинку в своем левом меню. Я хочу отобразить кнопку входа. Я надеюсь, что вы поняли, что я сказал.получить ответ – Nevaeh

Смежные вопросы