Facebook登录Android注册

时间:2018-03-30 10:58:49

标签: android facebook-graph-api facebook-login

我正在尝试在我的应用程序中添加主页上的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查看内容)

1 个答案:

答案 0 :(得分:0)

看起来你的onSuccess方法没有被调用。

请将以下代码添加到您的登录活动中。

android.injected.testOnly=false

将CallbackManager作为全局变量。