gpt4 book ai didi

java - 自定义 Facebook 登录以与 MethodChannel 一起使用

转载 作者:IT王子 更新时间:2023-10-29 06:36:47 25 4
gpt4 key购买 nike

我正在尝试使用一些 native 代码为 Flutter 创建一个 Facebook 身份验证插件。我已经让代码在一个完全 native 的测试项目上工作,但无法让它在 android 插件项目中工作。我不是 Android 专家,所以我对此的了解非常有限。但这就是我所拥有的:

public class FacebookSignInPlugin implements MethodCallHandler {

CallbackManager callbackManager;
AccessToken token;

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


@Override
public void onMethodCall(MethodCall call, Result result) {
if (call.method.equals("signInUser")) {
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("It works on Android");
} else {
result.notImplemented();
}
}

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}

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

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

我想使用最后两个功能:登录、注销。但是在方法“onActivityResult”中,我遇到了一个问题,它无法解析 onActivityResult,在“登录”中,我遇到了与 loginWithReadPermissions 相同的问题。一切都应该正确导入。任何具有 Android 经验的人都可以提供帮助?

最佳答案

为了在 Flutter 插件中使用 onActivityResult,你必须做两件事:

  1. 实现PluginRegistry.ActivityResultListener接口(interface)
  2. 将插件添加到 registerWith 静态方法中的 ActivityResultListeners 列表。

去除 MethodCall 位的简化示例:

public class FacebookSignInPlugin implements MethodCallHandler,
// Implement PluginRegistry.ActivityResultListener
PluginRegistry.ActivityResultListener {

public static void registerWith(Registrar registrar) {
final MethodChannel channel = new MethodChannel(registrar.messenger(), "my_plugin");
final FacebookSignInPlugin instance = new MyPlugin();

// Register your plugin as an ActivityResultListener
registrar.addActivityResultListener(instance);
channel.setMethodCallHandler(instance);
}

private CallbackManager callbackManager = CallbackManager.Factory.create();

@Override
public void onMethodCall(MethodCall call, final Result result) {
}

@Override
public boolean onActivityResult(int i, int i1, Intent intent) {
// Forward the activity result to the Facebook CallbackManager
callbackManager.onActivityResult(i, i1, intent);
return false;
}
}

关于java - 自定义 Facebook 登录以与 MethodChannel 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44718417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com