1

当我点击Facebook按钮时,它显示错误“应用程序已禁用Oauth客户端流量”,但我已经启用Oauth客户端流量在Facebook上开发者控制台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:对不起我的英文不好

+0

你在分班时做了什么是荒谬的。 'FacebookLogin'扩展'Authentication',但'Authentication'类本身对'FacebookLogin'有'static'引用。在分班时你究竟想要达到什么目的?无论如何,你的问题的答案已经回答了qbix – Dibzmania

回答

0

你说的代码停止工作,当你分开这两类。您通过创建FacebookLogin来分隔代码,该代码扩展了Authentication,这是一个AppCompatActivity。然后您将一个静态成员添加到FacebookLogin类型的Authentication。这不是打破一段代码的好方法。它造成的一个问题是系统将不会回拨FacebookLogin中的onActivityResult()。相反,任何活动结果都将传递给活动Authentication的实例。由于它不再具有onActivityResult()的覆盖,所以您的代码无法处理它。

+0

这是我的错......但我删除了'FacebookLogin'的静态它仍然不工作。 – eawarnong

相关问题