我正在使用Facebook sdk 4.1.我已将fb登录按钮添加到片段中,我将代码设置如下:
@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;
}
Run Code Online (Sandbox Code Playgroud)
然后,我有这样的活动
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);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是callbackManager.onActivityResult(requestCode,resultCode,data); 在onActivityResult方法中调用但是LoginManager.getInstance().registerCallback(callbackManager,新的FacebookCallback()......永远不会被调用.为什么会发生这种情况?
| 归档时间: |
|
| 查看次数: |
3242 次 |
| 最近记录: |