2017-06-24 13 views
0

私はまだFlutter Facebook認証プラグインを作成しようとしています。ユーザーがログインできるようになりましたが、何らかの理由でコールバックが登録されていません。誰にもアイデアはありますか?Flutter Facebookのログインプラグイン:コールバックを登録していません

/** 
* FacebookSignInPlugin 
*/ 
public class FacebookSignInPlugin implements MethodCallHandler { 

    private FlutterActivity activity; 
    CallbackManager callbackManager; 
    AccessToken token; 

    /** 
    * Plugin registration. 
    */ 
    public static void registerWith(Registrar registrar) { 
    final MethodChannel channel = new MethodChannel(registrar.messenger(), "facebook_sign_in"); 
    FacebookSignInPlugin instance = new FacebookSignInPlugin((FlutterActivity) registrar.activity()); 
    channel.setMethodCallHandler(instance); 
    } 

    private FacebookSignInPlugin(FlutterActivity activity) { 
    this.activity = activity; 
    } 


    @Override 
    public void onMethodCall(MethodCall call, Result result) { 
    if (call.method.equals("signInUser")) { 
     FacebookSdk.setApplicationId("XXX"); 
     FacebookSdk.sdkInitialize(this.activity); 
     callbackManager = CallbackManager.Factory.create(); 
     LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 

      token = loginResult.getAccessToken(); 
      Log.d("Facebook", token.toString()); 
     } 

     @Override 
     public void onCancel() { 
      System.out.println("cancel"); 
      Log.d("Facebook", "Cancel"); 
     } 

     @Override 
     public void onError(FacebookException error) { 

     } 
     }); 
     login(); 
     result.success(token); 
    } else { 
     result.notImplemented(); 
    } 
    } 

    public void login() { 
    LoginManager.getInstance().logInWithReadPermissions(this.activity, Arrays.asList("public_profile", "user_friends")); 
    } 

    public void logout() { 
    LoginManager.getInstance().logOut(); 
    } 
} 

答えて

0

コールバックの結果を返す前に、result.successを呼び出すことが早すぎます。私はあなたがresult.success(token);onSuccess内に移動し、onCancelでエラーケースを処理する必要がありますと思う。プライベートメンバー変数AccessTokenを削除する必要があります。

関連する問題