Facebookボタンをクリックすると「アプリケーションがOauthクライアントフローを無効にしました」というメッセージが表示されます。開発者コンソール。Facebookのログインエラーが「Oauthクライアントフローが無効になっていますが、有効にしました」
2クラスに分けます。しかし、私が1クラスにマージすると、正常に動作します。
public class Authentication extends AppCompatActivity implements
View.OnClickListener{
static protected FirebaseAuth auth;
private FirebaseAuth.AuthStateListener authStateListener;
static FacebookLogin facebookLogin;
static CallbackManager callbackManager;
String TAG = "LOGIN";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.index);
findViewById(R.id.button_facebook_signout).setOnClickListener(this);
Button btnStudent = (Button)findViewById(R.id.student);
final LoginButton loginButton = (LoginButton) findViewById(R.id.button_facebook_login);
auth = FirebaseAuth.getInstance();
authStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if(user != null) {
// User is signed in
Log.d(TAG, "User is signed in");
} else {
// User is signed out
Log.d(TAG, "User is signed out");
}
}
};
btnStudent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loginButton.performClick();
facebookLogin = new FacebookLogin();
facebookLogin.initFacebookLogin(loginButton, getApplicationContext());
}
});
}
FacebookLogin.java:
public class FacebookLogin extends Authentication{
protected void initFacebookLogin(LoginButton loginButton, Context context) {
Log.d(TAG, "Facebook Login Class" + loginButton.getText());
final Intent intent = new Intent(context, AddCourse.class);
callbackManager = CallbackManager.Factory.create();
loginButton.setReadPermissions("public_profile", "email");
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
handleFacebookAccessToken(loginResult.getAccessToken());
Log.d(TAG, "Facebook success");
startActivity(intent);
}
@Override
public void onCancel() {
Log.d(TAG, "Facebook cancel");
}
@Override
public void onError(FacebookException error) {
Log.d(TAG, error.toString());
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Pass the activity result back to the Facebook SDK
callbackManager.onActivityResult(requestCode, resultCode, data);
}
private void handleFacebookAccessToken(AccessToken token) {
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
auth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "facebook complete");
}
});
}
PS:私の悪い英語
クラスの分割中に行ったことは不条理です。 'FacebookLogin'は' Authentication'を拡張しますが、 'Authentication'クラス自体は' FacebookLogin'への 'static'参照を持っています。あなたがクラスを分割している間に達成したいことは何ですか?とにかくあなたの問題への答えはqbix – Dibzmania