Blu*_*sky 2 android facebook parse-platform
我想用facebook进行身份验证,使用Parse来存储用户的信息.我在我的应用程序类中得到以下代码:
public class App extends Application {
public void onCreate() {
super.onCreate();
Parse.enableLocalDatastore(this);
Parse.setLogLevel(Parse.LOG_LEVEL_VERBOSE);
Parse.initialize(this, "[XXX]", "[XXX]");
ParseFacebookUtils.initialize(this);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的登录活动中,以下内容:
public class LoginActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
findViewById(R.id.login_auth_button).setOnClickListener(authClickListener);
}
@Override
protected void onStart() {
super.onStart();
currentUser = ParseUser.getCurrentUser();
if (currentUser != null) {
loadNext();
} else {
}
}
public void loadNext(){
[XXX]
}
View.OnClickListener authClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
List<String> permissions = Arrays.asList("public_profile","user_friends");
ParseFacebookUtils.logInWithReadPermissionsInBackground(LoginActivity.this, permissions, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException err) {
if(err!=null)
err.printStackTrace();
if (user == null) {
Log.d("MyApp", "Uh oh. The user cancelled the Facebook login.");
}
else {
loadNext();
}
}
});
}
};
}
Run Code Online (Sandbox Code Playgroud)
似乎所有东西都配置正确(如果我用Parse创建一个TestObject,我可以在Parse Dashboard中看到它).当我点击登录按钮,Facebook活动启动时,我可以授权我的应用程序访问Facebook,但是当我同意时,没有任何事情发生,loadNext()从未被调用过,我在日志中没有得到任何关于它的信息.如果我再次单击该按钮,则会出现以下异常:
06-08 22:23:46.542 8722-8722/pics.pickd.pickd W/System.err? com.parse.ParseException: java.lang.RuntimeException: Unable to authenticate when another authentication is in process
06-08 22:23:46.542 8722-8722/pics.pickd.pickd W/System.err? at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:105)
06-08 22:23:46.542 8722-8722/pics.pickd.pickd W/System.err? at android.os.Handler.handleCallback(Handler.java:739)
06-08 22:23:46.542 8722-8722/pics.pickd.pickd W/System.err? at android.os.Handler.dispatchMessage(Handler.java:95)
06-08 22:23:46.542 8722-8722/pics.pickd.pickd W/System.err? at android.os.Looper.loop(Looper.java:135)
Run Code Online (Sandbox Code Playgroud)
任何的想法 ???
我找到了答案.我错过了在我的活动上添加onActivityResult()方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ParseFacebookUtils.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)