Question

We're building a web app in PHP. We've set up SSL certificate and right after that the FB login stopped working. When the script tries to get user ID, exception is thrown

An active access token must be used to query information about the current user.

I'm 100% positive the SSL is the problem because it works fine on my localhost and it also worked on the production before setting up the SSL.

We're using Facebook PHP SDK. Here is the first part (getting login url)

$facebook = new Facebook([
    "appId" => "APP_ID",
    "secret" => "SECRET"
]);

$permissions = ["email", "user_birthday", "publish_stream", "offline_access"];
$loginURL = $facebook->getLoginUrl([
    "scope" => join(",", $permissions),
    "redirect_uri" => "REDIRECT_URI"
]);
// redirect to $loginURL

And here's the callback

$facebook = new Facebook([
    "appId" => "APP_ID",
    "secret" => "SECRET"
]);

$userID = $facebook->getUser();
$token  = $_GET['code'];

if(isset($userID) && isset($token)) {
    // ... some cool stuff
} else {
    // error, something happened
}

Thanx for help

EDIT: I was getting the error because I was trying to get details about user by the $userID. Problem was, the $userID is always 0 so no wonder I got error. Somehow I can't get user's ID on the website with SSL...

Was it helpful?

Solution

OK in the end I found the cause of my problems and it was realy stupid (like almost always, right?). When I was building the callback URL that is sent as an argument to the FB login page, I was getting the base url with a method from the framework I use. For some reason it gave me domain.com:443/ instead of domain.com/. After I fixed it, it suddenly works.

OTHER TIPS

In mu case it was the WWW that was missing from the redirect URL. SSL cert was working only with it

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top