android授权与facebook
我正试图用facebook授权我的移动应用程序,但当facebook授权窗口关闭时,它不会返回到我的应用程序的ContinueLoad(1)方法。。 不明白为什么:android授权与facebook,android,facebook,Android,Facebook,我正试图用facebook授权我的移动应用程序,但当facebook授权窗口关闭时,它不会返回到我的应用程序的ContinueLoad(1)方法。。 不明白为什么: private void authorizeFacebook(final Loader loader) { String[] permissions = new String[] {"friends_status", "user_status"}; facebook.authorize(this, pe
private void authorizeFacebook(final Loader loader) {
String[] permissions = new String[] {"friends_status", "user_status"};
facebook.authorize(this, permissions , new DialogListener() {
@Override
public void onComplete(Bundle values) {
Log.e("finish", "oncomplete");
//SharedPreferences.Editor editor = mPrefs.edit();
//editor.putString("access_token", facebook.getAccessToken());
//editor.putLong("access_expires", facebook.getAccessExpires());
//editor.commit();
loader.continueLoading(1);
}
@Override
public void onFacebookError(FacebookError error) {
Log.i("FacebookAuthorize", error.toString());
app.alert("Facebook Connection Error", "Please try to re-open the application", "Ok", loader);
}
@Override
public void onError(DialogError e) {
Log.i("FacebookAuthorize", e.toString());
app.alert("Facebook Connection Error", "Please try to re-open the application", "Ok", loader);
}
@Override
public void onCancel() {
Log.i("FacebookAuthorize", "onCancel");
app.alert("Facebook Connection Error", "Please try to re-open the application", "Ok", loader);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
装载机的第一步:
private void continueLoading(int step) {
switch(step)
{
//loading current user facebook profile
case 1: progressBar.incrementProgressBy(750);
loadingStatus.setText("Getting user's facebook details");
facebookRunner = new AsyncFacebookRunner(facebook);
facebookConnection = new FacebookConnection(this, 1);
facebookRunner.request("me",facebookConnection);
app.setFacebook(facebook);
app.setFacebookRunner(facebookRunner);
break;
它没有返回到我的应用程序,而是关闭所有内容。facebook android sdk有两种不同的身份验证流: 1) SSO-如果用户已在同一设备上安装facebook应用程序,则将使用SSO。 如果是这种情况,那么您正在使用的facebook sdk将启动facebook应用程序的新意图,以根据您的应用程序对用户进行身份验证。 要知道何时完成,您需要添加以下内容:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
2) 如果设备未安装facebook应用程序,则SDK将打开自己的对话框进行用户身份验证,在这种情况下,将使用传递给authorize
方法的DialogListener
实现
您需要同时使用(
DialogListener
和onActivityResult
)来处理这两种情况。这一行将做什么?装载机。连续装载(1);它将继续加载。。。登录成功后,如果您需要移动到新活动(如活动_1),我会将其添加到我的问题中,然后添加这行startActivity(新意图(this,Activity_1.class));但一切都是在同一个活动中发生的。。我希望它在相同的活动中继续。只需在继续加载()之前打印一条日志消息。并删除continueLoading()方法中的所有开关盒。并在continueLoading()中再打印一条日志消息。。进行测试,看看你的方法是否在调用,你是说我应该在对话侦听器中为没有facebook应用的用户使用continueLoading方法,为有facebook应用的用户使用onActivityResult方法。因此,如果我理解正确,我也应该在onActivityResult中添加continueLoad(1)?否。您只能调用facebook。授权
,然后sdk决定是使用其“对话框”还是使用意图。如果使用了意图,则执行onActivityResult
方法,然后通知sdk(facebook.authorizeCallback
),然后sdk应调用您提供的对话框侦听器的onComplete
实现。您需要做的就是添加onActivityResult方法。。我一直。。我甚至把它粘贴到我的代码片段中。很抱歉我错过了。。。将日志记录放在这两个方法中,以查看它是否到达authorize和中的任何一个,而不是onActivityResults,然后什么都没有。。。