pea*_*mak 5 android facebook parse-platform
我已经从Parse.com下载了样本,用于使用facebook登录并将uers添加到其数据浏览器中.其代码如下:
public class IntegratingFacebookTutorialApplication extends Application {
static final String TAG = "MyApp";
@Override
public void onCreate() {
super.onCreate();
Parse.initialize(this, "Parse Application ID",
"Parse Client Key");
ParseFacebookUtils.initialize(getString(R.string.facebook_app_id));
}
Run Code Online (Sandbox Code Playgroud)
import java.util.Arrays;
import java.util.List;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.parse.LogInCallback;
import com.parse.ParseException;
import com.parse.ParseFacebookUtils;
import com.parse.ParseUser;
public class LoginActivity extends Activity {
private Button loginButton;
private Dialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
loginButton = (Button) findViewById(R.id.loginButton);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onLoginButtonClicked();
}
});
// Check if there is a currently logged in user
// and they are linked to a Facebook account.
ParseUser currentUser = ParseUser.getCurrentUser();
if ((currentUser != null) && ParseFacebookUtils.isLinked(currentUser)) {
// Go to the user info activity
showUserDetailsActivity();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ParseFacebookUtils.finishAuthentication(requestCode, resultCode, data);
}
private void onLoginButtonClicked() {
LoginActivity.this.progressDialog = ProgressDialog.show(
LoginActivity.this, "", "Logging in...", true);
List<String> permissions = Arrays.asList("basic_info", "user_about_me",
"user_relationships", "user_birthday", "user_location");
ParseFacebookUtils.logIn(permissions, this, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException err) {
LoginActivity.this.progressDialog.dismiss();
if (user == null)
{
Toast.makeText(getApplicationContext(), "Uh oh. The user cancelled the Facebook login.",
Toast.LENGTH_SHORT).show();
} else if (user.isNew()) {
Toast.makeText(getApplicationContext(), "User signed up and logged in through Facebook.",
Toast.LENGTH_SHORT).show();
showUserDetailsActivity();
} else {
Toast.makeText(getApplicationContext(), "User logged in through Facebook!",
Toast.LENGTH_SHORT).show();
showUserDetailsActivity();
}
}
});
}
private void showUserDetailsActivity() {
Intent intent = new Intent(this, UserDetailsActivity.class);
startActivity(intent);
}
}
Run Code Online (Sandbox Code Playgroud)
启动应用程序(本教程),将显示登录页面(页面A),并在中间登录facebook按钮.
如果用户的设备中没有facebook app,则上述代码可以顺利成功运行,按下登录按钮后会弹出一个对话框,登录后可以获取用户详细信息并将用户详细信息添加到数据中Parse里面的浏览器.
但是,如果用户已经在设备中安装了Facebook应用程序,则不会出现对话框,而是会打开Facebook应用程序并要求登录.这就是问题发生的地方.它显示为权限对话框,然后在按"确定"后,对话框消失并返回到原始页面(第A页).
敬酒言论"Uh oh. The user cancelled the Facebook login".
代码有什么问题?还是ADT环境?我应该在清单中进一步添加任何东西
我研究如下:
有人说'经过多次尝试,诀窍是support.jar,特别是android-support-v4.jar.这附带了最新的Facebook SDK,但不是您项目的标准.使用SDK中的Facebook并将其复制到libs文件夹并链接.(https://parse.com/questions/urgent-parsefacebookutilslogin-issue-android)
我在该活动的清单文件上使用了android:noHistory ="true".因此,每当打开facebook登录活动时,我的活动就会被自动销毁.但是我在清单中没有这样的history = true语句.
| 归档时间: |
|
| 查看次数: |
2391 次 |
| 最近记录: |