facebook登录片段

时间:2013-06-13 07:13:17

标签: android facebook

作为android和facebook sdk的新手,但尝试按照link

登录

因为他们说它会用facebook进行登录过程,但没有任何事情发生,并且每次显示已注销状态。 这是活动类。

 public class MYFaceLoginActivity extends FragmentActivity {

        private LoginFragment loginfragment; 

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // TODO Auto-generated method stub
            if(savedInstanceState==null)
            {
                loginfragment=new LoginFragment();
                getSupportFragmentManager().beginTransaction().add(android.R.id.content, loginfragment).commit();

            }
            else
            {
                loginfragment=(LoginFragment) getSupportFragmentManager().findFragmentById(android.R.id.content);
            }


        }

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            // TODO Auto-generated method stub
            super.onActivityResult(requestCode, resultCode, data);
            //loginfragment.onActivityResult(requestCode, resultCode, data);
        }

    }

接下来是片段类

public class LoginFragment extends Fragment 
{
    private View login_view;
    private static final String TAG="LoginFragment";
    private UiLifecycleHelper uihelper;
    private LoginButton authbutton;

    private Session.StatusCallback callback=new Session.StatusCallback() {

        @Override
        public void call(Session session, SessionState state, Exception exception) {
            // TODO Auto-generated method stub
            onSessionStatechange(session, state, exception);
        }
    };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        login_view=inflater.inflate(R.layout.login_fragment, container,false);

        authbutton=(LoginButton) login_view.findViewById(R.id.authButton);
        authbutton.setFragment(this);
        authbutton.setReadPermissions(Arrays.asList("user_likes","user_status"));

        return login_view;
    }

    private void onSessionStatechange(Session session,SessionState state,Exception exception)
    {
        if(state.isOpened()){
            Log.i(TAG, "LOGGED IN....");
        }
        else
        {
            Log.i(TAG, "LOGGED OUT....");
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        uihelper=new UiLifecycleHelper(getActivity(), callback);
        uihelper.onCreate(savedInstanceState);
    }

    @Override
    public void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        Session session=Session.getActiveSession();
        if((session!=null)&&(session.isOpened()||session.isClosed()))
        {
            onSessionStatechange(session, session.getState(), null);

        }
        uihelper.onResume();
    }

    @Override
    public void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        uihelper.onPause();
    }
    @Override
    public void onSaveInstanceState(Bundle outState) {
        // TODO Auto-generated method stub
        super.onSaveInstanceState(outState);
        uihelper.onSaveInstanceState(outState);
    }
    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        uihelper.onDestroy();
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        uihelper.onActivityResult(requestCode, resultCode, data);
    }
}

任何人都可以指出我在这里做错了什么。感谢任何回复,并且这个facebook登录新的3.0卡住了三天。

2 个答案:

答案 0 :(得分:18)

看看这个例子,也许事情会让你清楚。我没有尝试过它,但我希望它没有任何问题。

Facebook Login Example

答案 1 :(得分:0)

请在MYFaceLoginActivity文件

中进行更改
getSupportFragmentManager().beginTransaction().add(
    android.R.id.content,loginfragment).commit();

Insted use:

getSupportFragmentManager().beginTransaction().add(R.id.content, loginfragment).commit();
loginfragment=(LoginFragment) getSupportFragmentManager().findFragmentById(R.id.content);