IOS的foursquare oauth2

时间:2010-12-20 02:05:13

标签: grails mobile oauth-2.0 foursquare

我从v1 foursquare api升级到需要Oauth2的v2。

按照推荐的方式使用Web服务器流是否正确我应该引导用户: https://foursquare.com/oauth2/authenticate   ?CLIENT_ID = YOUR_CLIENT_ID   &安培; RESPONSE_TYPE =代码   &安培; REDIRECT_URI = YOUR_REGISTERED_REDIRECT_URI

用户通过身份验证后,foursquare会重定向到: https://YOUR_REGISTERED_REDIRECT_URI/?code=CODE

含义我需要在https://YOUR_REGISTERED_REDIRECT_URI定义一个端点,然后向

发出请求

https://foursquare.com/oauth2/access_token   ?CLIENT_ID = YOUR_CLIENT_ID   &安培; client_secret = YOUR_CLIENT_SECRET   &安培; grant_type = authorization_code   &安培; REDIRECT_URI = YOUR_REGISTERED_REDIRECT_URI   &安培;代码= CODE

在我的服务器端获取实际令牌。

此流程如何将令牌返回移动设备以供使用?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这只是我的一个猜测,但这是一个可能的流程:

  1. 打开uiwebview并将用户发送到https://foursquare.com/oauth2/authenticate?client_id = YOUR_CLIENT_ID& response_type = code& redirect_uri = YOUR_REGISTERED_REDIRECT_URI
  2. 接受后,他们会被重定向到https://YOUR_REGISTERED_REDIRECT_URI/?code=CODE,例如https://domainyouown.com/callback?code=asdfasdfasdfasdf
  3. 让您回拨页面向https://foursquare.com/oauth2/access_token发出请求吗?client_id = YOUR_CLIENT_ID& client_secret = YOUR_CLIENT_SECRET& grant_type = authorization_code& redirect_uri = YOUR_REGISTERED_REDIRECT_URI& code = CODE
  4. 获取json响应(仍然在您的回调页面代码中),将其保存到您的服务器端数据库(如果正在使用),并且还在ID为“oauth-token”的div中显示在页面的html上。
  5. 使用UIWebView的 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)脚本获取div的值并将其存储在iphone设置中
  6. 您可能还想查看https://github.com/nxtbgthng/OAuth2Client

答案 1 :(得分:0)

如果您正在执行无服务器流程(仅限移动应用程序),您将执行以下操作:

  1. 弹出UIWebview - > https://foursquare.com/oauth2/authenticate?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REGISTERED_REDIRECT_URI(确保重定向匹配)
  2. 您的重定向uri应指向您应用的URL方案(例如APPNAME:// callbackuri)。当用户完成登录时,UIWebview将调用包含oauth令牌的重定向URI。 URI将调用您的app delegate中的方法- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
  3. 要从网址
  4. 获取访问令牌
    if ([url.absoluteString rangeOfString:@"access_token="].location != NSNotFound) 
            NSString *accessToken = [[url.absoluteString componentsSeparatedByString:@"="] lastObject];
    

    保存该accessToken,并确保将其包含在所有Foursquare调用中(参数:oauth_token = ACCESSTOKEN)