Wednesday, 15 June 2011

Asp.net Web api 2 Facebook login -



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