Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 处理不同的firebase登录选项_Android_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Android 处理不同的firebase登录选项

Android 处理不同的firebase登录选项,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我正在开发一个Android应用程序,它可以使用Firebase实时数据库处理google、facebook和twitter登录,但我不知道如何在单个活动中实现三种不同的登录。您可以使用不同的请求代码,如下面的代码 public static final int RC_TWITTER_LOGIN = 2; public static final int RC_GOOGLE_LOGIN = 1; @Override public void onActivityResult(int req

我正在开发一个Android应用程序,它可以使用Firebase实时数据库处理google、facebook和twitter登录,但我不知道如何在单个活动中实现三种不同的登录。

您可以使用不同的请求代码,如下面的代码

 public static final int RC_TWITTER_LOGIN = 2;
 public static final int RC_GOOGLE_LOGIN = 1;

  @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Map<String, String> options = new HashMap<String, String>();
    if (requestCode == RC_GOOGLE_LOGIN) {
        /* This was a request by the Google API */
        if (resultCode != RESULT_OK) {
            mGoogleLoginClicked = false;
        }
        mGoogleIntentInProgress = false;
        if (!mGoogleApiClient.isConnecting()) {
            mGoogleApiClient.connect();
        }
    } else if (requestCode == RC_TWITTER_LOGIN) {
        options.put("oauth_token", data.getStringExtra("oauth_token"));
        options.put("oauth_token_secret", data.getStringExtra("oauth_token_secret"));
        options.put("user_id", data.getStringExtra("user_id"));
        authWithFirebase("twitter", options);
    } else {
        /* Otherwise, it's probably the request by the Facebook login button, keep track of the session */
        mFacebookCallbackManager.onActivityResult(requestCode, resultCode, data);
    }
}
public static final int RC_TWITTER_LOGIN=2;
公共静态最终int RC_GOOGLE_LOGIN=1;
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
Map options=newhashmap();
if(requestCode==RC\u GOOGLE\u登录){
/*这是谷歌API的一个请求*/
if(resultCode!=结果\u确定){
mGoogleLoginClicked=false;
}
mGoogleIntentInProgress=false;
如果(!mgoogleapClient.isConnecting()){
mGoogleApiClient.connect();
}
}else if(requestCode==RC\u TWITTER\u登录){
options.put(“oauth_令牌”,data.getStringExtra(“oauth_令牌”);
options.put(“oauth_token_secret”,data.getStringExtra(“oauth_token_secret”);
options.put(“用户id”,data.getStringExtra(“用户id”);
authWithFirebase(“推特”,选项);
}否则{
/*否则,可能是Facebook登录按钮的请求,请跟踪会话*/
mFacebookCallbackManager.onActivityResult(请求代码、结果代码、数据);
}
}

您可以参考完整的代码演示

我的登录活动请检查该代码

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;

public class LoginActivity extends AppCompatActivity {

    private EditText inputEmail, inputPassword;
    private FirebaseAuth auth;
    private ProgressBar progressBar;
    private Button btnSignup, btnLogin, btnReset;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Get Firebase auth instance
        auth = FirebaseAuth.getInstance();

        if (auth.getCurrentUser() != null) {
            startActivity(new Intent(LoginActivity.this, MainActivity.class));
            finish();
        }

        // set the view now
        setContentView(R.layout.activity_login);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        inputEmail = (EditText) findViewById(R.id.email);
        inputPassword = (EditText) findViewById(R.id.password);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);
        btnSignup = (Button) findViewById(R.id.btn_signup);
        btnLogin = (Button) findViewById(R.id.btn_login);
        btnReset = (Button) findViewById(R.id.btn_reset_password);

        //Get Firebase auth instance
        auth = FirebaseAuth.getInstance();

        btnSignup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(LoginActivity.this, SignupActivity.class));
            }
        });

        btnReset.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(LoginActivity.this, ResetPasswordActivity.class));
            }
        });

        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String email = inputEmail.getText().toString();
                final String password = inputPassword.getText().toString();

                if (TextUtils.isEmpty(email)) {
                    Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show();
                    return;
                }

                if (TextUtils.isEmpty(password)) {
                    Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show();
                    return;
                }

                progressBar.setVisibility(View.VISIBLE);

                //authenticate user
                auth.signInWithEmailAndPassword(email, password)
                        .addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {
                                // If sign in fails, display a message to the user. If sign in succeeds
                                // the auth state listener will be notified and logic to handle the
                                // signed in user can be handled in the listener.
                                progressBar.setVisibility(View.GONE);
                                if (!task.isSuccessful()) {
                                    // there was an error
                                    if (password.length() < 6) {
                                        inputPassword.setError(getString(R.string.minimum_password));
                                    } else {
                                        Toast.makeText(LoginActivity.this, getString(R.string.auth_failed), Toast.LENGTH_LONG).show();
                                    }
                                } else {
                                    Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                                    startActivity(intent);
                                    finish();
                                }
                            }
                        });
            }
        });
    }
}
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.annotation.NonNull;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.text.TextUtils;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ProgressBar;
导入android.widget.Toast;
导入com.google.android.gms.tasks.OnCompleteListener;
导入com.google.android.gms.tasks.Task;
导入com.google.firebase.auth.AuthResult;
导入com.google.firebase.auth.FirebaseAuth;
公共类LoginActivity扩展了AppCompatActivity{
私人编辑文本输入电子邮件,输入密码;
私有FirebaseAuth-auth;
私人ProgressBar ProgressBar;
专用按钮btnSignup、btnLogin、btnReset;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//获取Firebase身份验证实例
auth=FirebaseAuth.getInstance();
if(auth.getCurrentUser()!=null){
startActivity(新意图(LoginActivity.this、MainActivity.class));
完成();
}
//现在设置视图
setContentView(R.layout.activity\u登录);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
inputEmail=(EditText)findViewById(R.id.email);
inputPassword=(EditText)findViewById(R.id.password);
progressBar=(progressBar)findViewById(R.id.progressBar);
btnSignup=(按钮)findViewById(R.id.btn_注册);
btnLogin=(按钮)findViewById(R.id.btn\u登录);
btnReset=(按钮)findViewById(R.id.btn\u重置\u密码);
//获取Firebase身份验证实例
auth=FirebaseAuth.getInstance();
btnSignup.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
startActivity(新意图(LoginActivity.this、SignupActivity.class));
}
});
btnReset.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
startActivity(新意图(LoginActivity.this、ResetPasswordActivity.class));
}
});
btnLogin.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串email=inputEmail.getText().toString();
最终字符串密码=inputPassword.getText().toString();
如果(TextUtils.isEmpty(电子邮件)){
Toast.makeText(getApplicationContext(),“输入电子邮件地址!”,Toast.LENGTH\u SHORT.show();
回来
}
if(TextUtils.isEmpty(密码)){
Toast.makeText(getApplicationContext(),“输入密码!”,Toast.LENGTH\u SHORT.show();
回来
}
progressBar.setVisibility(View.VISIBLE);
//验证用户
使用电子邮件和密码进行身份验证登录(电子邮件,密码)
.addOnCompleteListener(LoginActivity.this,新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
//如果登录失败,则向用户显示消息。如果登录成功
//将通知身份验证状态侦听器,并使用逻辑来处理
//可以在侦听器中处理已登录用户。
progressBar.setVisibility(View.GONE);
如果(!task.issusccessful()){
//有一个错误
if(password.length()<6){
inputPassword.setError(getString(R.string.minimum_password));
}否则{
Toast.makeText(LoginActivity.this、getString(R.string.auth_失败)、Toast.LENGTH_LONG.show();
}
}否则{
意向意向=新意向(LoginActivity.this、MainActivity.class);
星触觉(意向);
完成();
}
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="info.androidhive.firebase.LoginActivity">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/colorPrimary"
        android:gravity="center"
        android:orientation="vertical"
        android:padding="@dimen/activity_horizontal_margin">


        <ImageView
            android:layout_width="@dimen/logo_w_h"
            android:layout_height="@dimen/logo_w_h"
            android:layout_gravity="center_horizontal"
            android:layout_marginBottom="30dp"
            android:src="@mipmap/ic_launcher" />

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp"
                android:hint="@string/hint_email"
                android:inputType="textEmailAddress"
                android:textColor="@android:color/white"
                android:textColorHint="@android:color/white" />
        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/password"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp"
                android:hint="@string/hint_password"
                android:inputType="textPassword"
                android:textColor="@android:color/white"
                android:textColorHint="@android:color/white" />
        </android.support.design.widget.TextInputLayout>

        <!-- Login Button -->

        <Button
            android:id="@+id/btn_login"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dip"
            android:background="@color/colorAccent"
            android:text="@string/btn_login"
            android:textColor="@android:color/black" />

        <Button
            android:id="@+id/btn_reset_password"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dip"
            android:background="@null"
            android:text="@string/btn_forgot_password"
            android:textAllCaps="false"
            android:textColor="@color/colorAccent" />

        <!-- Link to Login Screen -->

        <Button
            android:id="@+id/btn_signup"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dip"
            android:background="@null"
            android:text="@string/btn_link_to_register"
            android:textAllCaps="false"
            android:textColor="@color/white"
            android:textSize="15dp" />
    </LinearLayout>

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_gravity="center|bottom"
        android:layout_marginBottom="20dp"
        android:visibility="gone" />
</android.support.design.widget.CoordinatorLayout>