Search code examples
iosobjective-cfacebook-graph-apiacaccountstorenshttpcookie

Pass cookie to UIWebView - iOS


I have an iOS application which allows the user to use Apple's built in Accounts/Social frameworks to login via Facebook.

One question I have is, is there a way to pass user auth cookie from ACAccountStore to a UIWebView?

This will mean that, if a user clicks on a link and the built in web view page is shown, they will be able to comment/like/etc without having to login in the web view too.

Thanks,

Dan


Solution

  • I think it won't be possible if you don't control the service you want to be authenticated with in said webviews.

    Injecting arbitrary cookies into a UIWebView is possible, as described e.g. here: Is it possible to set a cookie manually using sharedHTTPCookieStorage for a UIWebView?.

    Cached auth tokens can be retrieved from ACAccountCredential. But OAuth tokens are not session-authenticating cookies.

    Facebook does that. Whenever a webview is opened in their iOS client, the user will be automatically authenticated with Facebook in that webview. But they have control over their own service, so they created a mechanism for their iOS client to request session-authenticating cookies (that they then inject into webviews).

    In general, though, being a 3rd party developer, you won't be able to reproduce that behavior. Unless of course given service has such mechanism for their own needs and you do some reverse-engineering.