2013-01-17 2 views
2

내 앱에서 페이 스북 인증을 사용하려고 시도하지만 로그인 할 수 없으며 앱이 내 정보에 액세스 할 수 있는지 묻는 양식으로 항상 리디렉션됩니다. 즉, 내 코드에서 "dologin"방법은 .. 여기 내 코드입니다 : 문제는 실제로 나는 창문에 몇 가지 바보 같은 문제가 있었다 키 해시 에서 온Facebook with android sdk 3.0

package com.fbconnect; 

import android.app.Activity; 
import android.os.Bundle; 
import com.facebook.*; 
import com.facebook.model.*; 
import com.facebook.widget.*; 

import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
import android.content.Intent; 

public class MainActivity extends Activity { 

    private TextView textInstructionsOrLink; 
    private Button buttonLoginLogout; 

    private Session.StatusCallback statusCallback = new SessionStatusCallback(); 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     buttonLoginLogout = (Button)findViewById(R.id.login_button); 
     setContentView(R.layout.main); 
     Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS); 
     Session session = Session.getActiveSession(); 
     if (session == null) { 
      if (savedInstanceState != null) { 
       session = Session.restoreSession(this, null, statusCallback, savedInstanceState); 
      } 
      if (session == null) { 
       session = new Session(this); 
      } 
      Session.setActiveSession(session); 
      if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) { 
       session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback)); 
      } 
     } 

     updateView(); 

    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     Session.getActiveSession().addCallback(statusCallback); 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
     Session.getActiveSession().removeCallback(statusCallback); 
    } 

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

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     Session session = Session.getActiveSession(); 
     Session.saveSession(session, outState); 
    } 

    private void updateView() { 
     Session session = Session.getActiveSession(); 
     Log.i("session log", session.toString()); 
     if (session.isOpened()) { 
      TextView welcome = (TextView) findViewById(R.id.welcome); 
      welcome.setText("Hello !"); 
     } else { 

      doLogin(); 
     } 
    } 

    private void doLogin() { 
     Session session = Session.getActiveSession(); 
     if (!session.isOpened() && !session.isClosed()) { 
      session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback)); 
     } else { 
      Session.openActiveSession(this, true, statusCallback); 
     } 
    } 

    private class SessionStatusCallback implements Session.StatusCallback { 
     @Override 
     public void call(Session session, SessionState state, Exception exception) { 
      updateView(); 
     } 
    } 
} 

답변

0

, 여기에 몇 가지 조언은 다음과 같습니다

  • Windows cmd를 사용하지 말고 cygwin을 통해 수행하십시오
  • % HOMEPATH %를 사용하지 마십시오 (페이스 북에 표시되어 있더라도 ...). "C : \ Users \ ... \. android \ debug.keystore"
  • 따옴표로 키 스토어 경로를 둘러 쌉니다. (공백이 없더라도)
  • 발전기가 암호를 묻지 않으면 작동하지 않을 것입니다.
관련 문제