Asp.net Web api 2 Facebook login -
i'm trying authenticate user via facebook web api. able authenticate user when specify returnurl parameter base of operations of web site.
my site layout next in test environment:
http://subdomain.main.com/api/ - api location
http://subdomain.main.com/web/ - client website location
i list of providers via api , returns next json
[{"name":"facebook","url":"/api/api/account/externallogin? provider=facebook&response_type=token& client_id=self&redirect_uri=https%3a%2f%2fsubdomain.main.com%2f&state=mscybsfdvhmmxvh8kanwmdunhqo2s4rfbg9sabxt_jm1","state":"mscybsfdvhmmxvh8kanwmdunhqo2s4rfbg9sabxt_jm1"}] i redirect user url provided api. opens facebook , asks user allow app.
so working when utilize base of operations url, when alter returnurl following:
https://subdomain.main.com/api/api/account/externallogins?returnurl=https://subdomain.main.com/web/&generatestate=true
the api returns url normal, when seek redirect user url provided returns:
error: invalid_request
how can api redirect website can grab oauth token?
you need edit validateclientredirecturi method include custom homecoming uri. default template code permits root of website valid homecoming uri.
the illustration below quick hack till decide on exact homecoming uri.
public override task validateclientredirecturi(oauthvalidateclientredirecturicontext context) { if (context.clientid == _publicclientid) { uri expectedrooturi = new uri(context.request.uri, "/"); if (expectedrooturi.absoluteuri == context.redirecturi) { context.validated(); } } homecoming task.fromresult<object>(null); } to
public override task validateclientredirecturi(oauthvalidateclientredirecturicontext context) { if (context.clientid == _publicclientid) { context.validated(); } homecoming task.fromresult<object>(null); } asp.net asp.net-web-api
No comments:
Post a Comment