baseURL
in the callback URL is your application server URL. Replace baseURL
with your application server URL. e.g.,
callback = "http://localhost:8080/mySampleApp/oauth/facebook/callback"
and your error resolved.
One more thing replace successUri
and failureUri
as well. e.g.,
oauth {
providers {
facebook {
api = org.scribe.builder.api.FacebookApi
key = 'Your_Key'
secret = 'Your_Secret'
successUri = 'http://localhost:8080/mySampleApp/oauthCallback/success'
failureUri = 'http://localhost:8080/mySampleApp/oauthCallback/error'
callback = "http://localhost:8080/mySampleApp/oauth/facebook/callback"
}
}
}
and provide code to get data from Facebook. I have written code to get user info:
import grails.converters.JSON
import org.scribe.model.Token
class OauthCallbackController {
def oauthService
def index() {}
def success() {
Token facebookAccessToken = (Token) session[oauthService.findSessionKeyForAccessToken('facebook')]
if (facebookAccessToken) {
def facebookResource = oauthService.getFacebookResource(facebookAccessToken, "https://graph.facebook.com/me")
def facebookResponse = JSON.parse(facebookResource?.getBody())
Map data = [id: facebookResponse.id, username: facebookResponse.username, name: facebookResponse.name, email: facebookResponse.email,
first_name: facebookResponse.first_name, last_name: facebookResponse.last_name, birthday: facebookResponse.birthday,
gender: facebookResponse.gender, link: facebookResponse.link, work: facebookResponse.work, hometown: facebookResponse.hometown,
education: facebookResponse.education]
render data
} else {
flash.error = "Token not found."
render view: '/index'
}
}
def error() {
render params
}
}
Hope this helps :-)