2015-04-21 44 views
0

我的應用程序允許用戶與Facebook連接。我想在登錄Facebook之後獲得userprofile信息(使用Facebook SDK 4.0.1)。我認爲我應該使用aynctask來得到它,但我不知道如何。在下次活動中使用facebook sdk 4.0.1登錄後獲取用戶配置文件android

loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() 
    { 
     @Override 
     public void onSuccess(LoginResult loginResult) 
     { 
      System.out.println("onSuccess"); 
      msginfo.setText("You can now share image on facebook"); 
      otherview.setVisibility(View.VISIBLE); 

      GraphRequest request = GraphRequest.newMeRequest 
        (loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() 
        { 
         @Override 
         public void onCompleted(JSONObject object, GraphResponse response) 
         { 
          // Application code 
          Log.v("LoginActivity", response.toString()); 
          //System.out.println("Check: " + response.toString()); 
          try 
          { 
           String id = object.getString("id"); 
           idT.setText(object.getString("id")); 
           ppv.setProfileId(object.getString("id")); 
           nameT.setText(object.getString("name")); 
           emailT.setText(object.getString("email")); 
           locationT.setText(object.getString("address")); 

           String name = object.getString("name"); 
           String email = object.getString("email"); 
           String gender = object.getString("gender"); 
           String birthday = object.getString("birthday"); 
           // String location = object.getString("location"); 
           // String location = object.getString("user_location"); 
           // String location = object.getString("address"); 




           System.out.println(id + ", " + name + ", " + email + ", " + gender + ", " + birthday); 
           // locationT.setText(location); 

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

         } 
        }); 
      Bundle parameters = new Bundle(); 
      parameters.putString("fields", "id,name,email,gender, birthday,link"); 
      request.setParameters(parameters); 
      request.executeAsync(); 
     } 
     @Override 
     public void onCancel() 
     { 
      System.out.println("onCancel"); 
     } 

     @Override 
     public void onError(FacebookException exception) 
     { 
      System.out.println("onError"); 
      Log.v("LoginActivity", exception.getCause().toString()); 
     } 
    }); 

,我還可以在當前的活動,但不會在未來一個獲取配置文件信息。

+1

你能解釋一下嗎?你想要什麼? – Soham

+0

爲類中的所有數據創建gatter和setter方法..並設置值並在其他活動中獲取值.. – Destro

+0

@Soham我希望當用戶連接Facebook時,他可以在下一個活動中看到他的信息(用戶名, profileimage)。 –

回答

1

我想你沒有權限

parameters.putString("fields", "id,name,email,gender,picture,birthday"); 

然後你就可以輕鬆獲得個人檔案相片

object.getJSONObject("picture").getJSONObject("data").getString("url"); 

希望它能幫助。

+0

感謝您的幫助,但是當我使用'profilepictureview。 setProfileId(Profile.getCurrentProfile()。getId());'我得到的圖像,但是當我使用'imageview .setImageBitmap(getFacebookProfilePicture(Profile.getCurrentProfile()。getId()))''''''或'imageview .setImageURI(Profile。 getProfilePictureUri(135,135));' 我得到空,我不知道爲什麼我花了一整天沒有結果 –

+0

我不認爲你會通過使用Profile.getCurrentProfile()。getProfilePictureUri(135,135 )。這裏是我給你完整的解決方案,你可以檢查該鏈接http://stackoverflow.com/questions/29634660/facebook-sdk-4-0-1-login-without-login-button/29693694#29693694 – Soham

相關問題