2012-08-15 5 views
0

내 프로젝트에서 페이스 북으로 로그인을 구현했습니다. 코드는 다음과 같습니다 : 내가 그것을 진행률 표시 줄을로드 30 ~ 40 초 후에는 같은 페이지를 반환하여 FB 버튼을 클릭하면 Facebook API가 내 에뮬레이터에서 작동하지 않습니까?

public class login extends Activity{ 
ImageView fbtn; 
private SharedPreferences mPrefs; 
static Facebook facebook = new Facebook("271089732997803"); 
String access_token; 
long expires; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.yf_login1); 
    mPrefs = getPreferences(MODE_PRIVATE); 
    access_token = mPrefs.getString("access_token", null); 
    expires = mPrefs.getLong("access_expires", 0); 
    fbtn = (ImageView)findViewById(R.id.fbtn); 
    fbtn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      if(access_token != null) { 
       facebook.setAccessToken(access_token); 
       Log.v("access_token", access_token); 
      } 
      if(expires != 0) { 
       facebook.setAccessExpires(expires); 
       Log.i("expires", ""+expires); 
      } 
      if (!facebook.isSessionValid()) { 

       facebook.authorize(login.this,new String[] {}, new DialogListener() { 
        @Override 
        public void onComplete(Bundle values) { 
         SharedPreferences.Editor editor = mPrefs.edit(); 
         editor.putString("access_token", facebook.getAccessToken()); 
         editor.putLong("access_expires", facebook.getAccessExpires()); 
         editor.commit(); 

        } 


        @Override 
        public void onFacebookError(FacebookError error) { 

        } 

        @Override 
        public void onError(DialogError e) { 

        } 

        @Override 
        public void onCancel() { 

        } 
      }); 
      } 
      else{ 
       startActivity(new Intent(login.this,ChooseTeam.class)); 
      } 

     } 
    }); 
} 

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

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

@Override 
public void onResume() {  
    super.onResume(); 
    facebook.extendAccessTokenIfNeeded(this, null); 
} 

지금 내 질문입니다.

가장 중요한 것은 내 다른 PC에서 동일한 프로젝트를 실행하면 완벽하게 실행되며, 페이스 북 로그인 대화 상자가 열리 며 내 환경 설정에서 값을 얻었습니다. 하지만 제 경우에는 저의 데이터에서 선호도를 얻을 수조차 없습니다.

내 에뮬레이터의 문제는 무엇입니까 ?? 나는 이클립스 galilio와 sdk20을 사용하고있다.

+0

에뮬레이터에 facebook 응용 프로그램을 설치했거나 먼저 말해줘서도 안됩니다. facebook connector class code too – Khan

+0

코드에서 facebook sdk를 사용했지만 더 이상 페이스 북 커넥터 클래스가 없습니다. 내 응용 프로그램에서 페이 스북 전용 SSO로 로그인을 구현하고 싶습니다. 내 다른 PC 에뮬레이터에 설치된 페이스 북 응용 프로그램이 없지만 작동합니다. 지금 무엇을해야합니까? –

+0

SSO에 해시 키를 사용하여 UR 키를 업데이트했는지 여부 – Khan

답변

2

나는 솔루션이 실제로 바이러스 백신 에뮬레이터를 위해 인터넷을 차단 얻었다. 그래서 바이러스 백신을 제거하고 응용 프로그램을 실행하고 작동합니다.

나를 도와 주셔서 감사합니다.

0

..이 .... 을 시도하고 페이스 북에서 공유하기 위해이 권한을 사용

개인 문자열 [] mPermissions = { "publish_stream"};

mFb.authorize(SettingActivity.this, mPermissions,new com.fbintegration.Facebook.DialogListener() 
         { 

          public void onFacebookError(FacebookError e) 
          { 

          } 

           public void onError(DialogError e) 
           { 

           } 

           public void onComplete(Bundle values) 
           { 


            SessionStore.save(mFb, getApplicationContext()); 



           } 

          public void onCancel() 
          { 
           // TODO Auto-generated method stub 

          } 
         }); 

이 페이스 북 커넥터 클래스입니다

....

public class FacebookConnector 
{ 

    private Facebook facebook = null; 
    private Context context; 
    private String[] permissions; 
    private Handler mHandler; 
    private Activity activity; 
    //private SessionListener mSessionListener = new SessionListener();; 

    public FacebookConnector(String appId,Activity activity,Context context,String[] permissions) 
    { 
     this.facebook = new Facebook(appId); 

     SessionStore.restore(facebook, context); 


     this.context=context; 
     this.permissions=permissions; 
     this.mHandler = new Handler(); 
     this.activity=activity; 
    } 

    public void login() 
    { 
     if (!facebook.isSessionValid()) 
     { 
      facebook.authorize(this.activity, this.permissions,new LoginDialogListener()); 
     } 
    } 

    /*public void logout() 
    { 
     SessionEvents.onLogoutBegin(); 
     AsyncFacebookRunner asyncRunner = new AsyncFacebookRunner(this.facebook); 
     asyncRunner.logout(this.context, new LogoutRequestListener()); 
    }*/ 

    public void postMessageOnWall(String msg) 
    { 
     if (facebook.isSessionValid()) 
     { 
      Bundle parameters = new Bundle(); 
      parameters.putString("message", msg); 
      try 
      { 
       //JSONObject response=Util.parseJson(facebook.request("me/feed", parameters,"POST")); 
       String response = facebook.request("me/feed", parameters,"POST"); 
       System.out.println(response); 
      } 
      catch (IOException e) 
      { 
       e.printStackTrace(); 
      } 
     } 
     else 
     { 

     } 
    } 

    private final class LoginDialogListener implements DialogListener 
    { 
     public void onComplete(Bundle values) 
     { 
      SessionEvents.onLoginSuccess(); 
     } 

     public void onFacebookError(FacebookError error) 
     { 
      SessionEvents.onLoginError(error.getMessage()); 
     } 

     public void onError(DialogError error) 
     { 
      SessionEvents.onLoginError(error.getMessage()); 
     } 

     public void onCancel() 
     { 
      SessionEvents.onLoginError("Action Canceled"); 
     } 
    } 


    private class SessionListener implements AuthListener, LogoutListener 
    { 

     public void onAuthSucceed() 
     { 
      SessionStore.save(facebook, context); 
     } 

     public void onAuthFail(String error) { 
     } 

     public void onLogoutBegin() {   
     } 

     public void onLogoutFinish() { 
      SessionStore.clear(context); 
     } 
    } 

    public Facebook getFacebook() 
    { 
     return this.facebook; 
    } 
} 
+0

나는 내 에뮬레이터에서 내 코드를 실행하고 싶다. 다른 시스템에서 잘 작동합니다. –

+0

어떤 버전을 사용하셨습니까? –

+0

avd의 2.2 버전 –

관련 문제