我使用Facebook SDK 4.0通过Facebook为我的应用程序实现了登录.
当用户点击Facebook登录按钮时,他导航到主页活动并加载新视图.问题是,有一段时间,在Facebook进程对话框消失之后并且在显示主视图之前,facebook登录按钮在“注销”中更改了他的文本,这是用户可见的.我怎么能避免这个?
当用户点击Facebook登录按钮时,他导航到主页活动并加载新视图.问题是,有一段时间,在Facebook进程对话框消失之后并且在显示主视图之前,facebook登录按钮在“注销”中更改了他的文本,这是用户可见的.我怎么能避免这个?
@Override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frg_login,container,false); callbackManager = CallbackManager.Factory.create(); fbLoginButton = (LoginButton) view.findViewById(R.id.fb_login_button); fbLoginButton.setReadPermissions("user_friends"); fbLoginButton.setReadPermissions("public_profile"); fbLoginButton.setFragment(this); fbLoginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { GraphRequest request = GraphRequest.newMeRequest( loginResult.getAccesstoken(),new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted( JSONObject object,GraphResponse response) { // Application code Log.v("LoginActivity",response.toString()); session = new SessionManager(getActivity()); try{ String name = object.getString("name"); session.createLoginSession(name,true); //Toast.makeText(getActivity(),"Login successful",Toast.LENGTH_SHORT).show(); } catch (JSONException exe) { } } }); Bundle parameters = new Bundle(); parameters.putString("fields","id,name"); request.setParameters(parameters); request.executeAsync(); } @Override public void onCancel() { Toast.makeText(getActivity(),"Login canceled",Toast.LENGTH_SHORT).show(); } @Override public void onError(FacebookException exception) { Toast.makeText(getActivity(),"Login error",Toast.LENGTH_SHORT).show(); } }); return view; }
在调用片段的活动中:
if (currentAccesstoken != null) { navigatetoHomeActivity(); } public void navigatetoHomeActivity(){ Intent homeIntent = new Intent(getActivity(),MainActivity.class); homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(homeIntent); }
谢谢大家