Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Can';当我导出应用程序时,请不要登录Facebook_Php_Android_Facebook - Fatal编程技术网

Php Can';当我导出应用程序时,请不要登录Facebook

Php Can';当我导出应用程序时,请不要登录Facebook,php,android,facebook,Php,Android,Facebook,我用FacebookSDK构建了一个应用程序,Emulator上的一切都很好,但是当我导出我的应用程序在我的移动设备上运行时,我无法登录,这很令人沮丧,因为这是我的第一个应用程序,我认为一切都正常工作 我的登录也可以作为注册按钮使用。当没有帐户的人尝试登录时,它会使用Facebook的数据自动创建一个帐户 我使用PHP将数据插入数据库,当有人尝试登录时,我调用此函数: case "loginfb": facebook_func($_POST['email'],$_POST['na

我用FacebookSDK构建了一个应用程序,Emulator上的一切都很好,但是当我导出我的应用程序在我的移动设备上运行时,我无法登录,这很令人沮丧,因为这是我的第一个应用程序,我认为一切都正常工作

我的登录也可以作为注册按钮使用。当没有帐户的人尝试登录时,它会使用Facebook的数据自动创建一个帐户

我使用PHP将数据插入数据库,当有人尝试登录时,我调用此函数:

case "loginfb":
        facebook_func($_POST['email'],$_POST['name'],$_POST['gender'],$_POST['image']);
我的函数调用一个查询来检查发送的电子邮件是否已经存在,以便进行正常登录,否则,它将创建一个新帐户

    function facebook_func($email,$name,$gender,$image){

    $result = db_queries("SELECT * FROM users WHERE email='$email'");
    $row = mysqli_fetch_array($result);

    if($row[16] == 1){ //row 16 check if the account uses social network login
        if($row[0]){ //Check if the id exists on database
        echo $row[0];
        online_func($row[3],$row[0]);
    }else{
    //Inserts new account into the Database 
    //echo id from the user
    }
}
我回显用户的Id以将其保存在Java会话中

会话代码:

public class NewSession extends Application {

   Session session = new Session();

   public String getUserId() {
      return session.suserid; 
   }
}  
我的主要活动完整代码:

public class MainActivity extends Activity {

    private EditText email, password;
    private TextView status;
    private CallbackManager callbackManager;
    private LoginButton loginButton;


    @Override
    protected void onActivityResult(int requestCode, int responseCode, Intent data) {
        super.onActivityResult(requestCode, responseCode, data);
        callbackManager.onActivityResult(requestCode, responseCode, data);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(this.getApplicationContext());
        setContentView(R.layout.activity_main);

        email = (EditText) findViewById(R.id.email);
        password = (EditText) findViewById(R.id.password);
        status = (TextView) findViewById(R.id.statusField);
        callbackManager = CallbackManager.Factory.create();
        loginButton = (LoginButton) findViewById(R.id.login_button);
        List < String > permissionNeeds = Arrays.asList("user_photos", "email");
        loginButton.setReadPermissions(permissionNeeds);

        loginButton.registerCallback(callbackManager, new FacebookCallback < LoginResult > () {@Override
            public void onSuccess(LoginResult loginResult) {
                System.out.println("onSuccess");
                GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {


                    @Override
                    public void onCompleted(JSONObject object,
                    GraphResponse response) {
                        // TODO Auto-generated method stub
                        // Application code
                        Log.v("LoginActivity", response.toString());
                        //System.out.println("Check: " + response.toString());
                        try {
                            String id = object.getString("id");
                            String name = object.getString("name");
                            String image = "http://graph.facebook.com/" + id + "/picture?width=600&height=600";
                            String email = object.getString("email");
                            String gender = object.getString("gender");
                            String getgender = "";

                            if (getgender.equals("male")) {
                                getgender = "2";
                            } else {
                                getgender = "1";
                            }
                            facebookLogin(email, name, getgender, image);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                });
                Bundle parameters = new Bundle();

                parameters.putString("fields", "id,name,email,gender");
                request.setParameters(parameters);
                request.executeAsync();
            }

            @Override
            public void onCancel() {
                System.out.println("onCancel");
            }

            @Override
            public void onError(FacebookException exception) {
                System.out.println("onError");
                Log.v("LoginActivity", exception.getCause().toString());
            }
        });
    }

    public void login(View view) {
        String getemail = email.getText().toString();
        String getpassword = password.getText().toString();
        new SigninActivity(this, status).execute(getemail, getpassword);
    }

    public void facebookLogin(String email, String name, String gender, String image) {
        new FBSigninActivity(this, status).execute(email, name, gender, image);
        Toast.makeText(getBaseContext(), "...",
        Toast.LENGTH_LONG).show();
    }

}
公共类MainActivity扩展活动{
私人编辑文本电子邮件,密码;
私有文本视图状态;
私人CallbackManager CallbackManager;
私人登录按钮登录按钮;
@凌驾
ActivityResult上受保护的void(int请求代码、int响应代码、意图数据){
super.onActivityResult(请求代码、响应代码、数据);
callbackManager.onActivityResult(请求代码、响应代码、数据);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sdkinInitialize(this.getApplicationContext());
setContentView(R.layout.activity_main);
email=(EditText)findviewbyd(R.id.email);
密码=(EditText)findViewById(R.id.password);
状态=(TextView)findViewById(R.id.statusField);
callbackManager=callbackManager.Factory.create();
loginButton=(loginButton)findviewbyd(R.id.login_按钮);
ListpermissionNeeds=Arrays.asList(“用户照片”、“电子邮件”);
setReadPermissions(permissionNeeds);
registerCallback(callbackManager,newfacebookcallback(){@Override
成功时公共无效(LoginResult LoginResult){
System.out.println(“onSuccess”);
GraphRequest request=GraphRequest.NewMereRequest(loginResult.getAccessToken(),new GraphRequest.GraphJSONObjectCallback()){
@凌驾
未完成的公共void(JSONObject对象,
GraphResponse(反应){
//TODO自动生成的方法存根
//应用程序代码
Log.v(“LoginActivity”,response.toString());
//System.out.println(“检查:+response.toString());
试一试{
stringid=object.getString(“id”);
字符串名称=object.getString(“名称”);
字符串图像=”http://graph.facebook.com/“+id+”/图片?宽度=600,高度=600”;
String email=object.getString(“email”);
字符串性别=object.getString(“性别”);
字符串getgender=“”;
if(getgender.equals(“男性”)){
getgender=“2”;
}否则{
getgender=“1”;
}
facebookLogin(电子邮件、姓名、性别、图像);
}捕获(JSONException e){
e、 printStackTrace();
}
}
});
Bundle参数=新Bundle();
参数.putString(“字段”、“id、姓名、电子邮件、性别”);
请求。设置参数(参数);
request.executeAsync();
}
@凌驾
公开作废{
System.out.println(“onCancel”);
}
@凌驾
public void onError(facebook异常){
System.out.println(“onError”);
Log.v(“LoginActivity”,exception.getCause().toString());
}
});
}
公共无效登录(查看){
字符串getemail=email.getText().toString();
字符串getpassword=password.getText().toString();
新的重要性(此,状态)。执行(getemail,getpassword);
}
public void facebook登录(字符串电子邮件、字符串名称、字符串性别、字符串图像){
新FBSignality(此,状态)。执行(电子邮件、姓名、性别、图像);
Toast.makeText(getBaseContext(),“…”,
Toast.LENGTH_LONG).show();
}
}
我的facebook登录类

public class FBSigninActivity extends AsyncTask < String, Void, String > {

    private TextView statusField;
    private Context context;
    private static final int LONG_DELAY = 3500; // 3.5 seconds

    public FBSigninActivity(Context context, TextView statusField) {
        this.context = context;
        this.statusField = statusField;
    }

    @Override
    protected String doInBackground(String...arg0) {

        try {
            String getemail = (String) arg0[0];
            String getname = (String) arg0[1];
            String getgender = (String) arg0[2];
            String getimage = (String) arg0[3];
            String link = "http://www.website.pt/Android/index.php?section=loginfb";
            String data = URLEncoder.encode("email", "UTF-8") + "=" + URLEncoder.encode(getemail, "UTF-8");
            data += "&" + URLEncoder.encode("name", "UTF-8") + "=" + URLEncoder.encode(getname, "UTF-8");
            data += "&" + URLEncoder.encode("gender", "UTF-8") + "=" + URLEncoder.encode(getgender, "UTF-8");
            data += "&" + URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(getimage, "UTF-8");
            URL url = new URL(link);


            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);
            OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(data);
            wr.flush();

            Authenticator.setDefault(new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("user", "pass".toCharArray());
                }
            });

            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            StringBuilder sb = new StringBuilder();
            String line = null;
            // Read Server Response
            while ((line = reader.readLine()) != null) {
                sb.append(line);
                break;
            }
            return sb.toString();
        } catch (Exception e) {
            return new String("Exception: " + e.getMessage());
        }
    }


    @Override
    protected void onPostExecute(String result) {

        if (result == "") {
            Toast.makeText(context, "shows error",
            Toast.LENGTH_LONG).show();
        } else {

            Toast.makeText(context, "welcome message",
            Toast.LENGTH_LONG).show();

            String newuser = result.substring(0, 1);
            String newid = result.substring(1);

            if (newuser.equals("N")) {

                Toast.makeText(context, "...",
                Toast.LENGTH_LONG).show();

                Session.suserid = newid;

                Intent in = new Intent(context,
                editProfile.class);

                in .putExtra("checku", "new");

                context.startActivity( in );

            }else{
                context.startActivity(new Intent(context, ListUsersActivity.class));
                Session.suserid = result;

            }

        }
    }
}
公共类FBSignenActivity扩展了AsyncTask{
私有文本视图状态字段;
私人语境;
专用静态最终整数长_延迟=3500;//3.5秒
公共FBSignatureActivity(上下文、文本视图状态字段){
this.context=上下文;
this.statusField=statusField;
}
@凌驾
受保护的字符串doInBackground(字符串…arg0){
试一试{
字符串getemail=(字符串)arg0[0];
字符串getname=(字符串)arg0[1];
字符串getgender=(字符串)arg0[2];
字符串getimage=(字符串)arg0[3];
字符串链接=”http://www.website.pt/Android/index.php?section=loginfb";
字符串数据=urlcoder.encode(“电子邮件”,“UTF-8”)+“=”+urlcoder.encode(getemail,“UTF-8”);
数据+=“&”+URLEncoder.encode(“名称”,“UTF-8”)+“=”+URLEncoder.encode(getname,“UTF-8”);
数据+=“&”+URLEncoder.encode(“性别”,“UTF-8”)+“=”+URLEncoder.encode(getgender,“UTF-8”);
数据+=“&”+URLEncoder.encode(“图像”,“UTF-8”)+“=”+URLEncoder.encode(getimage,“UTF-8”);
URL=新的URL(链接);
URLConnection conn=url.openConnect