2015-05-20 62 views
0

我遇到了這個麻煩:當我嘗試執行「Profile.getprofile()」 方法時,即使使用ProfileTracker它也會返回null。facebook sdk4 android getprofile

這裏是我的代碼:

public class Login extends Activity implements OnClickListener,ConnectionCallbacks, OnConnectionFailedListener { 




//TODO Facebook 
ProfileTracker mProfileTracker; 
private CallbackManager callbackManager; 
final List<String> permisos = new ArrayList<String>(); 
private FacebookCallback<LoginResult> fb = new FacebookCallback<LoginResult>() { 


    @Override 
    public void onSuccess(LoginResult loginResult) { 
     // App code 
     mProfileTracker = new ProfileTracker() { 
      @Override 
      protected void onCurrentProfileChanged(Profile profile, Profile profile2) { 

      } 
     }; 
     mProfileTracker.startTracking(); 
     AccessToken token = loginResult.getAccessToken(); 
     Profile user = Profile.getCurrentProfile(); 
     String name = user.getName(); 
     Toast.makeText(Login.this, "Connected "+name , Toast.LENGTH_LONG).show(); 

    } 
    @Override 
    public void onCancel() { 
     // App code 

    } 

    @Override 
    public void onError(FacebookException exception) { 
     // App code 

    } 
}; 

我的onCreate:

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    FacebookSdk.sdkInitialize(getApplicationContext()); 
    callbackManager = CallbackManager.Factory.create(); 
    setContentView(R.layout.init_login); 

    imgFacebook = (ImageView) findViewById(R.id.login_img_facebook); 
    imgFacebook.setOnClickListener(this); 
    permisos.add("user_friends"); 
    permisos.add("public_profile"); 
    LoginManager.getInstance().setLoginBehavior(LoginBehavior.SUPPRESS_SSO); 
    LoginManager.getInstance().registerCallback(callbackManager, fb); 
} 

我的onClick:

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.login_img_facebook: 
     LoginManager.getInstance().logInWithReadPermissions(this,permisos); 
     break; 
    } 
} 

我onActivityResult:

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

我加入到我的清單:

<meta-data android:name="com.facebook.sdk.ApplicationId" 
      android:value="@string/facebook_app_id"/> 
    <activity android:name="com.facebook.FacebookActivity" 
      android:label="@string/app_name" 
      android:theme="@android:style/Theme.Translucent.NoTitleBar"/> 

通過我使用eclipse,而不是Android的工作室的方式

回答

0

的代碼

AccessToken token = loginResult.getAccessToken(); 
Profile user = Profile.getCurrentProfile(); 
String name = user.getName(); 
Toast.makeText(Login.this, "Connected "+name , Toast.LENGTH_LONG).show(); 

上面的代碼錯誤的位置應該放在裏面的跟蹤器的功能

mProfileTracker = new ProfileTracker() { 
    @Override 
    protected void onCurrentProfileChanged(Profile profile, Profile profile2) { 
     // Place above code here... 
    } 
}; 
+0

謝謝!這對我有效,但現在我有另一個疑問...我第一次登錄它工作正常,但在第一次後,它並沒有出現我吐司:( – Fran

+0

可能是由於你的'ProfileTracker'只在'FacebookCallback'的'onSuccess()'方法中被激活,我認爲它不被稱爲.. 或者,也許配置文件甚至沒有改變,因爲你已經登錄了..也嘗試直接獲取它。 .. –