2013-01-04 77 views
0

我正在开发一个旨在使用Facebook登录的Android应用程序。用户将使用他们的Facebook credentials.All登录到应用程序,当Android应用程序的Facebook未安装时,所有工作正常。但是,何时该设备安装了Android应用程序的Facebook,该应用程序不会超出登录界面。如何纠正该问题?任何援助将不胜感激。谢谢。 以下是登录活动的代码。使用Facebook登录在Android

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.facebook.*; 
import com.facebook.model.*; 
import com.facebook.Session; 


public class MokoActivity extends Activity implements OnClickListener{ 
    TextView create_account; 
    EditText name; 
    //private UiLifecycleHelper uiHelper; 
    private boolean isResumed=false; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     create_account=(TextView)findViewById(R.id.textView_createAccount); 
     name=(EditText)findViewById(R.id.editText_name); 
     create_account.setOnClickListener(this); 
    } 

    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     switch(v.getId()){ 
     case R.id.textView_createAccount: 
       String user_name=name.getText().toString(); 
       if(user_name.length()<4){ 
        Toast toast=Toast.makeText(MokoActivity.this,"Invalid Name",Toast.LENGTH_LONG); 
        toast.show(); 
       } 

       else{ 
      Session.openActiveSession(this, true,new Session.StatusCallback(){ 
       public void call(Session session,SessionState state,Exception exception){ 
        if(state.isOpened()){ 
         Intent intent=new Intent(MokoActivity.this,HomeActivity.class); 
         intent.putExtra("username",name.getText().toString()); 
         startActivity(intent); 
        } 
       } 
      }); 
      } 
      break; 
     } 
    } 

    public void onResume(){ 
     Session session=Session.getActiveSession(); 
     if(session != null && (session.isOpened() || session.isClosed())){ 
      onSessionStateChange(session, session.getState(), null); 
     } 
     super.onResume(); 
     isResumed = true; 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     isResumed = false; 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
    } 

    private void onSessionStateChange(Session session, SessionState state, Exception exception) { 
     if(isResumed){ 
     if (state.isOpened()) { 
      Intent intent=new Intent(MokoActivity.this,HomeActivity.class); 
      intent.putExtra("username",name.getText().toString()); 
      startActivity(intent); 
     } 
     else if (state.isClosed()) { 
      Toast toast=Toast.makeText(MokoActivity.this,"Logged out...",Toast.LENGTH_LONG); 
      toast.show(); 
      } 
     } 
    } 
    @Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
     } 
} 
+0

http://stackoverflow.com/questions/12382558/app-is-misconfigured-for-facebook-login-android-facebook-integration-issue这个问题? – RobinHood

+0

@RobinHood nope.the应用程序工作正常时,Facebook的Android未安装在设备上 –

+0

打开Facebook类,并将包默认更改为您的。在线'484' – RobinHood

回答

0

在你的FACEBOOK SDK库项目中。 在FACEBOOK.JAVA行号从181到199替换下面的代码。

**public void authorize(Activity activity, String[] permissions, 
      int activityCode, final DialogListener listener) { 
     // boolean singleSignOnStarted = false; 
     mAuthDialogListener = listener; 
     /* // Prefer single sign-on, where available. 
     if (activityCode >= 0) { 
      singleSignOnStarted = startSingleSignOn(activity, mAppId, 
        permissions, activityCode); 
     } 
     // Otherwise fall back to traditional dialog. 
     if (!singleSignOnStarted) { 
      startDialogAuth(activity, permissions); 
     }*/ 

     startDialogAuth(activity, permissions); 
    }** 

它只会在api中完美工作,不会与facebook应用程序的链接,它安装在手机中。

+0

在我所说的文件中sdk,它是完全不同的。在第181-199行中它的正义评论。可能在290行。 –

+0

哦..所以检查那些方法和行。 – itsrajesh4uguys

+0

从哪里下载了sdk? – itsrajesh4uguys

0

如果您无法安装应用程序,那么您必须检查您的软件包名称,如果您的例外情况不佳,请检查例外字符例外,如'_'或无法解析软件包名称。那么请改变你的包名称。它不得包含_(下划线)之类的字符。并且在AndroidManifest.xml中也改变了。