2015-12-23 77 views
2

profile.getProfile()在代碼下運行時返回null。
我正在使用正確的hashkey,正確的應用程序ID。
我在onDestory()方法中停止配置文件和訪問示蹤器
我沒有使用任何Facebook應用程序 任何想法來解決這個問題。配置文件在使用Facebook API時返回null

 @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. 呼叫在FB按鈕的onclick事件:

    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. 獲取hashKey並創建key並在清單文件中註冊FacebookActivity。

試試吧..這裏

+0

我已經按照你的步驟,但它仍然沒有工作..爲什麼onSuccess重複兩次...第一次:在我的代碼中聲明mCallback,第二個是在你的代碼的onCreate()。此外,我沒有得到我需要放置讀取權限的地方 – ojas