2015-12-23 2 views
2

Профиль.profile() возвращает null во время работы под кодом.
Я использую правильный hashkey, правильный идентификатор приложения.
Я останавливаю профиль и получаю доступ к методу onDestory()
Я не использую приложение facebook Любая идея исправить это.Профиль возвращает null при использовании Facebook API

 @Override 
     public void onCreate(Bundle savedInstane) 
     { 
      super.onCreate(savedInstane); 
      // Add code to print out the key hash 

      FacebookSdk.sdkInitialize(getActivity().getApplicationContext()); 
      callbackManager = CallbackManager.Factory.create(); 
      accessTokenTracker = new AccessTokenTracker() { 
       @Override 
       protected void onCurrentAccessTokenChanged(AccessToken accessToken, AccessToken accessToken1) { 

       } 
      }; 
      profileTracker = new ProfileTracker() { 
       @Override 
       protected void onCurrentProfileChanged(Profile profile, Profile profile1) { 

       } 
      }; 
      accessTokenTracker.startTracking(); 
      profileTracker.startTracking(); 
     } 


    private FacebookCallback<LoginResult> mcallBack = new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       AccessToken token = loginResult.getAccessToken(); 
       Profile profile = Profile.getCurrentProfile(); 
       Uri link = profile.getProfilePictureUri(20, 20); 
       Log.d("Message",link.toString()); 
       display(profile); 
      } 
     }; 


@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 

void facebookLogin() 
    { 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
     callbackManager = CallbackManager.Factory.create(); 
     setContentView(R.layout.activity_signin); 
     LoginButton login = (LoginButton)findViewById(R.id.login_button_facebook); 
     login.setReadPermissions(Arrays.asList("public_profile", "user_friends")); 
     login.registerCallback(callbackManager, mcallBackFacebook); 
    } 
+0

вы дали разрешения до получения детали facebook? – MFP

ответ

0

Выполните следующие шаги:

  1. В вашей деятельности

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
    
    
        FacebookSdk.sdkInitialize(this.getApplicationContext()); 
    
        callbackManager = CallbackManager.Factory.create(); 
    
    
        LoginManager.getInstance().registerCallback(callbackManager, 
         new FacebookCallback<LoginResult>() { 
          @Override 
          public void onSuccess(LoginResult loginResult) { 
           GraphRequest request = GraphRequest.newMeRequest(
             loginResult.getAccessToken(), 
             new GraphRequest.GraphJSONObjectCallback() { 
              @Override 
              public void onCompleted(
               JSONObject object, 
               GraphResponse response) { 
               // Call service for check facebook auth from server 
               try { 
                mFBID = encodeToBase64("" + object.get("email")); 
                System.out.println("Your facebook is is-----" + mFBID); 
                //YOUR CODE 
               } catch (JSONException e) { 
                e.printStackTrace(); 
               } 
              } 
             }); 
    
           //its will return id, name and email 
           Bundle parameters = new Bundle(); 
           parameters.putString("fields", "id,name,email"); 
           request.setParameters(parameters); 
           request.executeAsync(); 
    
          } 
    
          @Override 
          public void onCancel() { 
           Toast.makeText(LoginActivity.this, "Login Cancel", Toast.LENGTH_LONG).show(); 
          } 
    
          @Override 
          public void onError(FacebookException exception) { 
           Toast.makeText(LoginActivity.this, exception.getMessage(), Toast.LENGTH_LONG).show(); 
          } 
         }); 
    
    
        setContentView(R.layout.XML); 
    
    } 
    
  2. вызов в случае OnClick кнопки FB:

    LoginManager.getInstance().logInWithReadPermissions(_activity, Arrays.asList("public_profile", "email", "user_friends")); 
    
  3. onActivityResult ()

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
        callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 
    
  4. Get hashKey и создать ключ и в проявленном регистра файла FacebookActivity.

Попробуй .. работает нормально здесь

+0

Я выполнил ваши шаги, но все еще не работает. Почему onSuccess повторяется два раза ... первый раз: объявление mCallback в моем коде, а второе - в onCreate() вашего кода. Кроме того, я не получаю, где именно мне нужно разместить разрешения на чтение – ojas

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