我正在尝试在我的应用程序中添加主页上的Facebook登录,但我不明白如何使用Facebook API。我阅读了Facebook的开发工具,但我不明白如何使用该方法。
我需要将Facebook数据合并到我已经存在的Mysql数据库中。 首先,我试图以这种方式登录:
package com.example.anto.loginapp;
import android.content.Intent;
import android.nfc.Tag;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;
import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.Profile;
import com.facebook.login.Login;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;
import org.json.JSONException;
import org.json.JSONObject;
import java.lang.reflect.Array;
import java.util.Arrays;
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
final EditText edUser = (EditText) findViewById(R.id.edUser);
final EditText edPass = (EditText) findViewById(R.id.edPass);
final Button bLogin = (Button) findViewById(R.id.bLogin);
final TextView registerLink = (TextView) findViewById(R.id.etRegister);
final TextView info = (TextView) findViewById(R.id.info);
//registrazione normale
registerLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent registerIntent = new Intent(LoginActivity.this, RegisterActivity.class);
LoginActivity.this.startActivity(registerIntent);
}
});
CallbackManager callbackManager = CallbackManager.Factory.create();
LoginButton login_button = (LoginButton) findViewById(R.id.login_button);
//ask permission to Facebook
login_button.setReadPermissions(Arrays.asList("public_profile", "user_friends", "email", "user_birthday"));
//LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends"));
// Callback registration
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Intent fbIntent = new Intent(LoginActivity.this, UserAreaActivity.class);
LoginActivity.this.startActivity(fbIntent);
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
}
}
我试图将(在Facebook登录后)读取到我的用户区域。一切顺利,我看到按钮,工作(因为如果我按下打开facebook登录),在Facebook上我看到我的应用程序授权,但是当我按下继续时,应用程序返回到登录区域。如果我再次按下,facebook登录会说“我以前的登录...继续”,但如果我再继续返回登录。 我疯了,可能很容易理解,但我看不到哪里。
在此之后,我可以使用Facebook数据导入我的数据库(mysql)。我用什么方式?因为我尝试创建一个Json数组,但在日志中我什么也看不见(我使用命令Log.d,并使用Logcat查看内容)
答案 0 :(得分:0)
看起来你的onSuccess方法没有被调用。
请将以下代码添加到您的登录活动中。
android.injected.testOnly=false
将CallbackManager作为全局变量。