2013-07-12 25 views
0

我試圖讓簡單的登錄活動爲Facebook開發網頁上描述的工作:https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/的Android SDK的Facebook登錄onCompleted方法不叫

到目前爲止我的代碼:

package com.xxxx.android; 


import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

import com.actionbarsherlock.app.SherlockActivity; 
import com.facebook.Request; 
import com.facebook.Response; 
import com.facebook.Session; 
import com.facebook.SessionState; 
import com.facebook.model.GraphUser; 

public class MyTestsActivity extends SherlockActivity implements OnClickListener{ 

    private Button mFbLogin; 
    private TextView mWelcome; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_my_tests); 
     setViews(); 

     } 

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

    } 
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     switch(v.getId()) { 
     case R.id.bFbLogin: 
      facebookLogin(); 
      break; 
     } 
    } 

    private void facebookLogin() { 
     // TODO Auto-generated method stub 

     // start Facebook Login 
     Session.openActiveSession(this, true, new Session.StatusCallback() { 

      // callback when session changes state 
      @Override 
      public void call(Session session, SessionState state, Exception exception) { 
      if (session.isOpened()) { 

       // make request to the /me API 
       Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { 

       // callback after Graph API response with user object 
       @Override 
       public void onCompleted(GraphUser user, Response response) { 
        if (user != null) { 
        mWelcome.setText("Hello " + user.getName() + "!"); 
        } 
       } 
       }); 
      } 
      } 
     }); 
    } 

    private void setViews() { 
     mFbLogin = (Button) findViewById(R.id.bFbLogin); 
      mFbLogin.setOnClickListener(this); 
     mWelcome = (TextView) findViewById(R.id.tvWelcome); 
    } 

} 

的應用加載時,我按下登錄按鈕,它會打開一個diaglog,提示我允許訪問應用程序,按下yes後,活動將返回到原來的狀態。 textview不會更新用戶信息,該信息應該發生在facebook給出的onCompleted方法中。有任何想法嗎?

回答

1

我看到了你的代碼花花公子。我不是Android的Facebook SDK的成熟開發人員,但我認爲問題出在onActivityResult上。試着實現下面的代碼..我也執行了相同的代碼,但是我的問題已經解決。

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

    facebook.authorizeCallback(requestCode, resultCode, data); 
}