2016-02-25 5 views
0

Я внедрил логин с facebook в своем приложении, и он работает отлично в первый раз, но после первого раза он вообще не работает. Я попытался установить точку останова на методе onSuccess, но он не останавливается на этом. Вот мой код для входа в facebook. Сначала я инициализировать его в OnCreate метод как этотFacebook не работает после первого раза в Android

FacebookSdk.sdkInitialize(this.getApplicationContext()); 

, то я называю этот метод также в OnCreate

public void LoginViaFacebook() { 
    callbackManager = CallbackManager.Factory.create(); 
    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      // AppSharedPreference.getInstance(LoginActivity.this).setFbAccessToken(loginResult.getAccessToken().getToken().toString()); 

      final GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
       @Override 
       public void onCompleted(JSONObject object, GraphResponse response) { 
        try { 
         if (object.getString("id") != null) { 

          String fbId = object.getString("id"); 
          String name = object.getString("name"); 
          String imageUrl = object.getJSONObject("picture").getJSONObject("data").getString("url"); 
          int randomPIN = (int) (Math.random() * 9000) + 1000; 
          String password = String.valueOf(randomPIN); 
          String nettype = "2"; 
          param.add(new BasicNameValuePair("name", "Vivian")); 
          param.add(new BasicNameValuePair("lastname",fbId)); 
          param.add(new BasicNameValuePair("email","[email protected]")); 
          param.add(new BasicNameValuePair("password",password)); 
          param.add(new BasicNameValuePair("nettype",nettype)); 
          new FbRegisterAsyncTask().execute(); 
          // getLoginTokenViaAPI(fbId); 
          //registerUser(name, name, fbId, password,nettype); 

         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 

       } 
      }); 

      Bundle parameters = new Bundle(); 
      parameters.putString("fields", "id,name,email,gender,picture,birthday,link,location"); 
      request.setParameters(parameters); 
      request.executeAsync(); 
     } 

     @Override 
     public void onCancel() { 
      //AppUtils.showDialog(LoginActivity.this, getResources().getString(R.string.fb_login_cancel)); 
     } 

     @Override 
     public void onError(FacebookException exception) { 
      //AppUtils.showDialog(LoginActivity.this, getResources().getString(R.string.fb_login_error) + exception.getMessage().toString()); 
     } 
    }); 

} 

метод onActivityResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
     case RC_FB_IN: 
      callbackManager.onActivityResult(requestCode, resultCode, data); 
      break; 
    } 
} 

и на кнопку мыши, что я делаю это

iv_facebook.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      LoginManager.getInstance().logInWithReadPermissions(ActivityLogin.this, Arrays.asList("public_profile", "user_friends", "user_location", "email", "user_birthday")); 

      //LoginViaFacebook(); 
     } 
    }); 
+0

нашел ничего @Vivek –

+0

@SagarNayak вы должны сгенерировать ключ хэша через код вместо одного предоставленного ЦМДА –

ответ

0

После успешного входа вам необходимо выйти из fb перед следующей операцией, для этого используйте этот код для выхода из facebook.

LoginManager.getInstance().logOut(); 
+0

Где вы ее нашли? Это не имеет смысла. –

+0

не работает даже после использования выход из системы. после первого входа и он дает мне ошибку, а также ошибка пуста !!!!!!!!!!!!!! –

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