gpt4 book ai didi

java - 在 Facebook 登录中取消,抛出 java.lang.RunTimeException 告诉 sdks 未初始化

转载 作者:行者123 更新时间:2023-12-01 10:52:26 28 4
gpt4 key购买 nike

我在应用程序中使用 Facebook 登录时遇到困难。当用户首次使用手机中 native 安装的应用程序登录时授权我的应用程序时按下取消时,就会发生这种情况。

由于我的应用程序的登录位置位于 fragment 中,因此我所做的就是当用户单击登录时将控件发送到另一个 Activity ,并从那里开始,我执行所有回调。我以编程方式单击按钮以获取回电

我正在通过以下代码初始化应用程序

    super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(FacebookVirtualActivity.this);
setContentView(R.layout.activity_facebook_virtual);

loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.v("ONMESSAGE", "Data Arived");
}
@Override
public void onCancel(LoginResult loginResult) {
Log.v("ONMESSAGE", "Login cancelled");
}

现在,当用户取消登录时,我得到以下堆栈跟踪

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=129742, result=-1, data=Intent { (has extras) }} to activity {com.release.goquest/com.facebook.FacebookActivity}: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.

我不确定这是否与初始化有关,因为按确认键正在返回数据。

最佳答案

更新:

public class MainActivity extends AppCompatActivity {

private Button facebook;
private LoginManager loginManager;
private CustomFacebookCallback callback;
private CallbackManager callbackManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Facebook initialize
FacebookSdk.sdkInitialize(MainActivity.this);
FacebookSdk.addLoggingBehavior(LoggingBehavior.GRAPH_API_DEBUG_INFO);
FacebookSdk.addLoggingBehavior(LoggingBehavior.DEVELOPER_ERRORS);
FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_RAW_RESPONSES);

setContentView(R.layout.activity_main);

// Init button
facebook = (Button) findViewById(R.id.facebook);

// Instantiate parts and variables
callback = new CustomFacebookCallback();

// Callback Manager initialize
callbackManager = CallbackManager.Factory.create();

//===================
// Facebook Login
//===================

// 1) Permissions
final ArrayList<String> permissions = new ArrayList<String>();
permissions.add("email");
permissions.add("public_profile");
permissions.add("user_friends");

// 2) Set login function to button
facebook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loginManager = LoginManager.getInstance();
loginManager.logInWithReadPermissions(MainActivity.this, permissions);
loginManager.registerCallback(callbackManager, callback);
}
});
}

private class CustomFacebookCallback implements FacebookCallback<LoginResult> {

@Override
public void onSuccess(LoginResult loginResult) {
Log.d("Facebook", "Success!");
}

@Override
public void onCancel() {
Log.d("Facebook", "Canceled!");
}

@Override
public void onError(FacebookException e) {
Log.e("Facebook", "Error!");
}
}

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

上面的代码与调用的 onCancel() 一起使用。你可以尝试引用一下。

关于java - 在 Facebook 登录中取消,抛出 java.lang.RunTimeException 告诉 sdks 未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33776973/

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