2016-02-25 148 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你必须通过生成的代码,而不是一个由CMD –

回答

0

成功登录后,您需要在转到下一个活动之前从fb注销,以便使用此代码从Facebook注销。

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

提供的密钥哈希你在哪里找到它?这没有意义。即使在使用注销后, –

+0

也不能正常工作。第一次登录后,它给了我错误,也是错误是空白!!!!!!!!!!!!!! –