Siq*_*ira 5 android facebook firebase firebase-authentication
我在我的应用程序中添加了使用firebase身份验证的facebook登录,但登录身份验证仅适用于Android API 24.
当我尝试使用较低级别的API时,屏幕会冻结,应用程序将停止工作.
它太高,大多数用户的API级别较低.
实际上,我打算发布较低API级别的应用程序.
我正在使用的代码如下.
public class ConfigurationActivity extends Activity {
Button b_v_mm,b_som;
LoginButton loginButton;
CallbackManager callbackManager;
// [START declare_auth]
private FirebaseAuth mAuth;
// [END declare_auth]
private void handleFacebookAccessToken(AccessToken token) {
Log.d("FireBase", "handleFacebookAccessToken:" + token);
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d("FireBase", "signInWithCredential:success");
FirebaseUser user = mAuth.getCurrentUser();
//updateUI(user);
} else {
// If sign in fails, display a message to the user.
Log.w("FireBase", "signInWithCredential:failure", task.getException());
//Toast.makeText(FacebookLoginActivity.this, "Authentication failed.",
// Toast.LENGTH_SHORT).show();
//updateUI(null);
}
// ...
}
});
}
// [START on_start_check_user]
@Override
public void onStart() {
super.onStart();
Log.d("FireBase", "onStart");
// Check if user is signed in (non-null) and update UI accordingly.
FirebaseUser currentUser = mAuth.getCurrentUser();
//updateUI(currentUser);
}
// [END on_start_check_user]
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("LoginFace", "LoginFace - onActivityResult");
super.onActivityResult(requestCode, resultCode, data);
Log.d("LoginFace", "LoginFace - onActivityResult");
callbackManager.onActivityResult(requestCode, resultCode, data);
Log.d("LoginFace", "LoginFace - After callbackManager");
/*
if (AccessToken.getCurrentAccessToken() != null) {
Log.d("AjudaFace", "AjudaFace - logout");
LoginManager.getInstance().logOut();
}*/
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_configuration);
//Botãp da barra de ferramentas que faz retornar para o Menu principal.
b_v_mm = (Button) findViewById(com.cerveja.qof.pedro.qof_cerveja.R.id.b_v_mm);
b_v_mm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ConfigurationActivity.this, MainMenu.class);
startActivity(intent);
finish();
}
});
b_som = (Button) findViewById(com.cerveja.qof.pedro.qof_cerveja.R.id.b_som);
//Altera opções de som.
b_som.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Carrega opções de texto do botão, armazenadas no repositório de strings
String s_som_on = getString(R.string.b_som_on);
String s_som_off = getString(R.string.b_som_off);
//Caso o som esteja desligado, o desliga.
if(b_som.getText().equals(s_som_on)) {
b_som.setText(s_som_off);
}
else //Caso o som esteja desligado, o liga.
if (b_som.getText().equals(s_som_off)){
b_som.setText(s_som_on);
}
}
}
);
callbackManager = CallbackManager.Factory.create();
// ...
// Initialize Firebase Auth
mAuth = FirebaseAuth.getInstance();
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("email","public_profile");
Log.d("LoginFace", "LoginFace - Button Created");
// Callback registration
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
handleFacebookAccessToken(loginResult.getAccessToken());
Log.d("LoginFace", "LoginFace - Sucesso");
Toast.makeText(getApplicationContext(),
"LOGIN REALIZADO", Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Log.d("LoginFace", "LoginFace - Cancelado");
Toast.makeText(getApplicationContext(),
"LOGIN CANCELADO", Toast.LENGTH_LONG).show();
}
@Override
public void onError(FacebookException exception) {
Log.d("LoginFace", "LoginFace - Erro");
Toast.makeText(getApplicationContext(),
"LOGIN Erro", Toast.LENGTH_LONG).show();
Log.d("LoginFace", exception.toString());
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
MyApplication活动中使用的对象
import android.app.Application;
import android.content.Context;
Run Code Online (Sandbox Code Playgroud)
**上面列出了项目中使用的所有对象
API 23日志:
12-02 17:22:26.900 2668-2745 /?D/EGL_emulation:eglMakeCurrent:0xaa9ba4e0:ver 2 0(tinfo 0xac3853a0)
Run Code Online (Sandbox Code Playgroud)[ 12-02 17:22:26.949 2668: 3361 D/ ] HostConnection::get() New Host Connection established 0xa19c5800, tid 3361 [ 12-02 17:22:26.950 2668: 3361 W/ ] Unrecognized GLES max version string in extensions: ANDROID_EMU_CHECKSUM_HELPER_v1ANDROID_EMU_dma_v1 12-02 17:22:26.977 2668-3361 /?D/EGL_emulation:eglCreateContext:0xaa9ba900:maj 2 min 0 rcv 2 12-02 17:22:26.978 2668-3361 /?D/EGL_emulation:eglMakeCurrent:0xaa9ba900:ver 2 0(tinfo 0xa23bf7e0)12-02 17:22:26.980 2668-3361 /?E/eglCodecCommon:glUtilsParamSize:unknow param 0x00008cdf 12-02 17:22:26.980 2668-3361 /?E/eglCodecCommon:glUtilsParamSize:unknow param 0x00008824 12-02 17:22:26.980 2668-3361 /?E/eglCodecCommon:glUtilsParamSize:unknow param 0x00008cdf 12-02 17:22:26.980 2668-3361 /?E/eglCodecCommon:glUtilsParamSize:unknow param 0x00008824 12-02 17:22:27.135 2668-3361 /?D/EGL_emulation:eglCreateContext:0xaa9ba9c0:maj 2 min 0 rcv 2 12-02 17:22:27.136 2668-3361 /?D/EGL_emulation:eglMakeCurrent:0xaa9ba9c0:ver 2 0(tinfo 0xa23bf7e0)12-02 17:22:29.740 2668-2668/com.cerveja.qof.pedro.qof_cerveja W/BindingManager:无法调用determinVisibility() - 从未看过连接对于pid:2668 12-02 17:22:32.649 2668-2745/com.cerveja.qof.pedro.qof_cerveja D/EGL_emulation:eglMakeCurrent:0xaa9ba4e0:ver 2 0(tinfo 0xac3853a0)12-02 17:22:32.650 2668 -2745/com.cerveja.qof.pedro.qof_cerveja E/Surface:getSlotFromBufferLocked:unknown buffer:0xb40bdc00 12-02 17:22:32.676 2668-3361/com.cerveja.qof.pedro.qof_cerveja D/EGL_emulation:eglMakeCurrent:0xaa9ba900 :ver 2 0(tinfo 0xa23bf7e0)12-02 17:22:32.687 2668-3361/com.cerveja.qof.pedro.qof_cerveja D/EGL_emulation:eglMakeCurrent:0xaa9ba9c0:ver 2 0(tinfo 0xa23bf7e0)12-02 17:22 :32.704 2668-2745/com.cerveja.qof.pedro.qof_cerveja D/EGL_emulation:eglMakeCurrent:0xaa9ba4e0:ver 2 0(tinfo 0xac3853a0)12-02 17:22:32.716 2668-2745/com.cerveja.qof.pedro. qof_cerveja E/eglCodecCommon:glUtilsParamSize:unkn ow param 0x00008cdf 12-02 17:22:32.767 2668-3361/com.cerveja.qof.pedro.qof_cerveja D/EGL_emulation:eglMakeCurrent:0xaa9ba900:ver 2 0(tinfo 0xa23bf7e0)12-02 17:27:05.115 2668-2711 /com.cerveja.qof.pedro.qof_cerveja W/DynamiteModule:找不到com.google.firebase.auth的本地模块描述符类.
最后一个可能是错误原因:
12-02 17:27:05.115 2668-2711/com.cerveja.qof.pedro.qof_cerveja W/DynamiteModule:找不到com.google.firebase.auth的本地模块描述符类.
我该怎么做才能降低所需的API级别?
尝试将您的客户端与 Firebase 应用重新同步,然后再次添加 .json 文件。
在 android studio 2.3 中,只需单击“工具”>“firebase”,然后在助手中检查您的应用程序是否已连接。
还要确保 Facebook 开发者帐户和 Firebase 控制台中的包名称正确。
您可以检查您的 Google Play 服务版本吗?
Android 设备应具有 Google Play 服务 9.0.0 或更高版本
出现此问题的原因之一可能是您的 Firebase > Auth Dashboard 中的登录方法可能被禁用
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |