gpt4 book ai didi

android - 未调用 Facebook LoginManager 回调

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:06 25 4
gpt4 key购买 nike

我使用的是 Facebook SDK 4.1。我已将 fb 登录按钮添加到 fragment 中,并将代码设置如下:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View view= inflater.inflate(R.layout.fragment_login, container, false);

LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button);
loginButton.setReadPermissions(Arrays.asList("public_profile", "email",
"user_birthday", "user_about_me"));

loginButton.setFragment(this);


return view;
}

然后我有这样的 Activity

public class MainActivity extends AppCompatActivity {

private CallbackManager callbackManager;

private AccessTokenTracker accessTokenTracker;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);

callbackManager = CallbackManager.Factory.create();

LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.i("login","success");
}

@Override
public void onCancel() {
Log.i("login","cancel");
}

@Override
public void onError(FacebookException e) {
Log.i("login","error");
}
});


accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(
AccessToken oldAccessToken,
AccessToken currentAccessToken) {
// App code
if(currentAccessToken.isExpired()){
LoginManager.getInstance().logOut();
}
}
};

AccessToken accessToken=AccessToken.getCurrentAccessToken();

if(accessToken==null||accessToken.isExpired()){
LoginManager.getInstance().logOut();
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame_container, new LoginFragment())
.commitAllowingStateLoss();
}

}

@Override
protected void onResume() {
super.onResume();

}


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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}
}

问题是 callbackManager.onActivityResult(requestCode, resultCode, data);在 onActivityResult 方法中被调用,但 LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback()... 永远不会被调用。为什么会这样?

最佳答案

我删除了 loginButton.setFragment(this);来自 fragment 的行并且正在工作

关于android - 未调用 Facebook LoginManager 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30632237/

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