MattD MattD - 4 months ago 13
PHP Question

Setting up Facebook Login on localhost

I've been following the steps outlined here to create a Facebook App Login:
http://developers.facebook.com/docs/howtos/login/server-side-login/

And am on Step 3. I'm setting this up on localhost for development and then I'll publish to Azure Websites with a different App ID. I'd like to have this working on localhost first though. (I haven't tried this with a non-localhost domain yet.)

On my Facebook App configuration page I've set a couple relevant fields:
Site URL: http:// localhost : 8052/ (Spaces added to allow submision to Stack Overflow)
App Domains: localhost

main.php redirects to a login page if there is no Facebook code set. This works fine.

<head>
<?php
if(!isset($_SESSION['code'])) {
echo ('<meta http-equiv="REFRESH" content="0;url=/login.php" />');
}
?>
</head>


login.php redirects to Facebook's login page using code copied from their example.

<?php

include '/lib/url.php';

$app_id = "XXXXX";
$app_secret = "XXXXX";
$my_url = CreateUrlForPage('welcome.php');

session_start();

$code = '';
if(!isset($_REQUEST["code"])) {
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); // CSRF protection
$dialog_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
. $_SESSION['state'];

echo $my_url.'<br/>';
echo $dialog_url.'<br/>';
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
?>


Clearly I've obfuscated my App ID above.

The URL generated by my "CreateUrlForPage" function looks fine as does the facebook login URL:

http://localhost:8052/welcome.php
https://www.facebook.com/dialog/oauth?client_id=XXXX&redirect_uri=http%3A%2F%2Flocalhost%3A8052%2Fwelcome.php&state=XXXX


(Again, some obfuscation here. The real values looked okay. The first being an integer the second being a long hex string.)

When I navigate to http:// localhost : 8052/login.php, The page redirects to Facebook and gives a completely useless error: "An error occurred. Please try again later."

I looked at a couple other posts on Stack Overflow, but they didn't solve my problem.

The error I'm getting looks just like the one described here:
Facebook application login error on localhost
The suggestion provided is to set the Domain and Site URL, which I've done.

There is also a link to this question: Running Facebook application on localhost
Again, they suggest Site URL. They also talk about app-canvas which is not something I'm using and I don't see how it would be related to login.

For what it's worth, before I set the Site URL and Domain, I was getting a different error - one that told me I needed to set the Site URL.

Answer

this code worked for me. double check your facebook app id and my site url is set to http:// localhost:8052/ dont really need to set domain name for login thanks

http://gamma.owlweb.com.ua/index.php/?route=account/register/fb

<?php

$app_id = "xxx";    $app_secret = "xxx"; 
$my_url ="http://localhost:3080/abc.php";

session_start();

$code = '';    

if(!isset($_REQUEST["code"])) {
  $_SESSION['state'] = md5(uniqid(rand(), TRUE)); // CSRF protection
  $dialog_url = 
    "https://www.facebook.com/dialog/oauth?client_id=".$app_id
    ."&redirect_uri=".urlencode($my_url)
    ."&state=".$_SESSION['state'];

  echo $my_url.'<br/>';
  echo $dialog_url.'<br/>';
  echo("<script> top.location.href='" . $dialog_url . "'</script>");
} 
?>
Comments