我有一个简单的Facebook登录注销活动,该活动正在成功运行.
但是,在我从应用程序注销后,我尝试再次登录,但facebook提供了无效的密钥哈希错误.
请注意,我第一次成功登录并注销,但在我退出并尝试再次登录后,Facebook会出现该错误.应该做什么?
谢谢你的关注.
这是我的代码:
public class MainFragment extends Fragment { private static final String TAG = MainFragment.class.getSimpleName(); private UiLifecycleHelper uiHelper; private final List<String> permissions; public MainFragment() { permissions = Arrays.asList("user_status"); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); uiHelper = new UiLifecycleHelper(getActivity(),callback); uiHelper.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_main,container,false); LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton); authButton.setFragment(this); authButton.setReadPermissions(permissions); return view; } @Override public void onResume() { super.onResume(); // For scenarios where the main activity is launched and user // session is not null,the session state change notification // may not be triggered. Trigger it if it's open/closed. Session session = Session.getActiveSession(); if (session != null && (session.isOpened() || session.isClosed()) ) { onSessionStateChange(session,session.getState(),null); } uiHelper.onResume(); } @Override public void onActivityResult(int requestCode,int resultCode,Intent data) { super.onActivityResult(requestCode,resultCode,data); uiHelper.onActivityResult(requestCode,data); } @Override public void onPause() { super.onPause(); uiHelper.onPause(); } @Override public void onDestroy() { super.onDestroy(); uiHelper.onDestroy(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); uiHelper.onSaveInstanceState(outState); } private void onSessionStateChange(Session session,SessionState state,Exception exception) { if (state.isOpened()) { Log.i(TAG,"Logged in..."); } else if (state.isClosed()) { if (Session.getActiveSession() != null) { Session.getActiveSession().closeAndClearTokenInformation(); } Session.setActiveSession(null); Log.i(TAG,"Logged out..."); } } private Session.StatusCallback callback = new Session.StatusCallback() { @Override public void call(Session session,Exception exception) { onSessionStateChange(session,state,exception); } };
}
解决方法
假设您已经将keyhash添加到您的Facebook应用程序中.
请确保在设置 – > Android系统.在“类名”字段中,您的第一个活动是所有包.例:com.yourcompany.yourapp.MyFirstActivity