Android Firebase Twitter登录未登录
代码似乎有效。Facebook和电子邮件登录工作。当我点击twitter按钮时,它会将我带到twitter登录和授权页面,我登录,然后什么也没发生。日志不显示成功,console不显示新用户。也没有错误。这是登录片段。对不起,如果它很乱,但我不是很有经验Android Firebase Twitter登录未登录,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,代码似乎有效。Facebook和电子邮件登录工作。当我点击twitter按钮时,它会将我带到twitter登录和授权页面,我登录,然后什么也没发生。日志不显示成功,console不显示新用户。也没有错误。这是登录片段。对不起,如果它很乱,但我不是很有经验 public class Login_Fragment extends Fragment implements OnClickListener { private View view; private EditText ed
public class Login_Fragment extends Fragment implements OnClickListener {
private View view;
private EditText editTextEmail, editTextPassword;
private Button loginButton;
private TextView forgotPassword, signUp;
private CheckBox show_hide_password, remember_me;
private LinearLayout loginLayout;
private static Animation shakeAnimation;
private FirebaseAuth.AuthStateListener mAuthListener;
FragmentManager manager;
private FirebaseAuth mAuth;
private TwitterLoginButton mLoginButton;
private static final String TAG = "TwitterLogin";
public Login_Fragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
TwitterAuthConfig authConfig = new TwitterAuthConfig(
getString(R.string.twitter_consumer_key),
getString(R.string.twitter_consumer_secret));
Fabric.with(getActivity(), new com.twitter.sdk.android.Twitter(authConfig), new Twitter(authConfig));
view = inflater.inflate(R.layout.login_layout, container, false);
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
manager = getFragmentManager();
mAuth = FirebaseAuth.getInstance();
initViews();
setListeners();
mLoginButton.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
Log.d(TAG, "twitterLogin:success" + result);
handleTwitterSession(result.data);
}
@Override
public void failure(TwitterException exception) {
Log.w(TAG, "twitterLogin:failure", exception);
}
});
return view;
}
@Override
public void onStart() {
super.onStart();
FirebaseUser currentUser = mAuth.getCurrentUser();
}
@Override
public void onResume(){
super.onResume();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Fragment fragment = getFragmentManager().findFragmentByTag(Utils.Login_Fragment);
if (fragment != null) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}
private void handleTwitterSession(TwitterSession session) {
Log.d(TAG, "handleTwitterSession:" + session);
AuthCredential credential = TwitterAuthProvider.getCredential(
session.getAuthToken().token,
session.getAuthToken().secret);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Log.d(TAG, "signInWithCredential:success");
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
BuySell_Fragment frag = new BuySell_Fragment();
ft.replace(R.id.frameContainer, frag);
ft.addToBackStack(null);
ft.commit();
} else {
Log.w(TAG, "signInWithCredential:failure", task.getException());
Toast.makeText(getContext(), "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
}
});
}
private void initViews() {
editTextEmail = (EditText) view.findViewById(R.id.login_emailid);
editTextPassword = (EditText) view.findViewById(R.id.login_password);
loginButton = (Button) view.findViewById(R.id.loginBtn);
forgotPassword = (TextView) view.findViewById(R.id.forgot_password);
signUp = (TextView) view.findViewById(R.id.createAccount);
show_hide_password = (CheckBox) view
.findViewById(R.id.show_hide_password);
loginLayout = (LinearLayout) view.findViewById(R.id.login_layout);
remember_me = (CheckBox) view.findViewById(R.id.remember_me);
mLoginButton = (TwitterLoginButton) view.findViewById(R.id.button_twitter_login);
shakeAnimation = AnimationUtils.loadAnimation(getActivity(),
R.anim.shake);
}
// Set Listeners
private void setListeners() {
loginButton.setOnClickListener(this);
forgotPassword.setOnClickListener(this);
signUp.setOnClickListener(this);
show_hide_password.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton button,
boolean isChecked) {
if (isChecked) {
show_hide_password.setText(R.string.hide_pwd);// change
editTextPassword.setInputType(InputType.TYPE_CLASS_TEXT);
editTextPassword.setTransformationMethod(HideReturnsTransformationMethod
.getInstance());
} else {
show_hide_password.setText(R.string.show_pwd);
editTextPassword.setInputType(InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_VARIATION_PASSWORD);
editTextPassword.setTransformationMethod(PasswordTransformationMethod
.getInstance());
}
}
});
}
@Override
public void onClick(View v) {
String email = editTextEmail.getText().toString();
String password = editTextPassword.getText().toString();
switch (v.getId()) {
case R.id.loginBtn:
if (email.isEmpty() || password.isEmpty()) {
new CustomToast().Show_Toast(getActivity(), view,
"المرجو ادخال ايميل و كلمة سر");
} else {
checkValidation();
signIn(email, password);
}
break;
case R.id.forgot_password:
android.support.v4.app.FragmentTransaction ft =
getActivity().getSupportFragmentManager().beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ForgotPassword_Fragment frag = new ForgotPassword_Fragment();
ft.replace(R.id.frameContainer, frag);
ft.addToBackStack(null);
ft.commit();
break;
case R.id.createAccount:
android.support.v4.app.FragmentTransaction fpft =
getActivity().getSupportFragmentManager().beginTransaction();
fpft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
SignUp_Fragment fpfrag = new SignUp_Fragment();
fpft.replace(R.id.frameContainer, fpfrag);
fpft.addToBackStack(null);
fpft.commit();
}
}
private void checkValidation() {
String getEmailId = editTextEmail.getText().toString();
String getPassword = editTextPassword.getText().toString();
Pattern p = Pattern.compile(Utils.regEx);
Matcher m = p.matcher(getEmailId);
// Check for both field is empty or not
if (getEmailId.equals("") || getEmailId.length() == 0
|| getPassword.equals("") || getPassword.length() == 0) {
loginLayout.startAnimation(shakeAnimation);
new CustomToast().Show_Toast(getActivity(), view,
"جميع الخانات مطلوبة");
}
else if (!m.find())
new CustomToast().Show_Toast(getActivity(), view,
"الايميل غير صحيح");
}
private void signIn(String email, String password) {
mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
new CustomToast().Show_Toast(getActivity(), view,
"محاولة تسجبل الدخول فشلت");
} else {
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
BuySell_Fragment frag = new BuySell_Fragment();
ft.replace(R.id.frameContainer, frag);
ft.addToBackStack(null);
ft.commit();
}
}
});
}
@Override
public void onDetach() {
super.onDetach();
try {
Field fragmentManager = Fragment.class.getDeclaredField("mFragmentManager");
fragmentManager.setAccessible(true);
fragmentManager.set(this, null);
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
公共类登录\u片段扩展了片段实现OnClickListener{
私人视野;
私人编辑邮件,编辑密码;
私人按钮登录按钮;
私人文本查看放弃密码,注册;
私人复选框显示隐藏密码,记住我;
私人线路布局后勤布局;
私有静态动画;
私有FirebaseAuth.AuthStateListener mAuthListener;
碎片管理器;
私人消防队;
私有TwitterLoginButton mLoginButton;
私有静态最终字符串TAG=“TwitterLogin”;
公共登录\u片段(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
TwitterAuthConfig authConfig=新建TwitterAuthConfig(
getString(R.string.twitter\u consumer\u key),
getString(R.string.twitter_consumer_secret));
Fabric.with(getActivity(),new com.twitter.sdk.android.twitter(authConfig),new twitter(authConfig));
视图=充气机。充气(R.layout.login\u布局,容器,false);
getActivity().setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u Grait);
manager=getFragmentManager();
mAuth=FirebaseAuth.getInstance();
initViews();
setListeners();
setCallback(新的回调(){
@凌驾
公开作废成功(结果){
Log.d(标记“twitterLogin:success”+结果);
handleTwitterSession(结果数据);
}
@凌驾
公共无效失败(TwitterException异常){
Log.w(标记“twitterLogin:failure”,异常);
}
});
返回视图;
}
@凌驾
public void onStart(){
super.onStart();
FirebaseUser currentUser=mAuth.getCurrentUser();
}
@凌驾
恢复时公开作废(){
super.onResume();
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
Fragment Fragment=getFragmentManager().findFragmentByTag(Utils.Login_Fragment);
if(片段!=null){
onActivityResult(请求代码、结果代码、数据);
}
}
私有无效handleTwitterSession(TwitterSession会话){
Log.d(标签“handleTwitterSession:+会话”);
AuthCredential credential=TwitterAuthProvider.getCredential(
session.getAuthToken().token,
session.getAuthToken().secret);
mAuth.SIGNWITH凭证(凭证)
.addOnCompleteListener(getActivity(),new OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Log.d(标记“signInWithCredential:success”);
FragmentTransaction ft=getActivity().getSupportFragmentManager().beginTransaction();
ft.setTransition(FragmentTransaction.transition\u FRAGMENT\u OPEN);
BuySell_Fragment frag=新的BuySell_Fragment();
ft.更换(R.id.frameContainer,frag);
ft.addToBackStack(空);
ft.commit();
}否则{
w(标记“signInWithCredential:failure”,task.getException());
Toast.makeText(getContext(),“身份验证失败”,
吐司。长度(短)。show();
}
}
});
}
私有void initViews(){
editTextEmail=(EditText)view.findViewById(R.id.login\u emailid);
editTextPassword=(EditText)view.findViewById(R.id.login\u密码);
loginButton=(按钮)view.findviewbyd(R.id.loginBtn);
forgotPassword=(TextView)view.findViewById(R.id.forget\u password);
signUp=(TextView)view.findViewById(R.id.createAccount);
显示\隐藏\密码=(复选框)视图
.findviewbyd(R.id.show\u hide\u密码);
loginLayout=(LinearLayout)view.findViewById(R.id.login\u布局);
记住我=(复选框)view.findviewbyd(R.id.membered\u me);
mLoginButton=(TwitterLoginButton)view.findViewById(R.id.button\u twitter\u login);
shakeAnimation=AnimationUtils.loadAnimation(getActivity(),
R.anim.shake);
}
//设置侦听器
私有void setListeners(){
setOnClickListener(这个);
forgotPassword.setOnClickListener(此);
signUp.setOnClickListener(this);
显示\隐藏\密码。setOnCheckedChangeListener(新的OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(复合按钮,
布尔值(已检查){
如果(已检查){
show_hide_password.setText(R.string.hide_pwd);//更改
editTextPassword.setInputType(InputType.TYPE\u CLASS\u TEXT);
editTextPassword.setTransformationMethod(HideReturnsTransformationMethod
.getInstance());
}否则{
show_hide_password.setText(R.string.show_pwd);
editTextPassword.setInputType(InputType.TYPE\u CLASS\u TEXT
|InputType.TYPE\u TEXT\u VARIATION\u PASSWO
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mLoginButton.onActivityResult(requestCode, resultCode, data);
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
Fragment fragment = (Fragment) getChildFragmentManager().findFragmentByTag(childTag);
if (fragment != null) {
fragment.onActivityResult(requestCode, resultCode, intent);
}
}