1

v1 foursquare api から、Oauth2 を必要とする v2 にアップグレードしています。

推奨されるように Web サーバー フローを使用するには、ユーザーを https://foursquare.com/oauth2/authenticateに誘導する必要があります 。

ユーザーが認証されると、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=CODE

サーバー側で実際のトークンを取得します。

このフローはどのようにトークンをモバイル デバイスに戻して使用できるようにしますか?

助けてくれてありがとう。

4

2 に答える 2

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 応答を取得し (まだコールバック ページのコードにあります)、それをサーバー側のデータベースに保存し (使用している場合)、ページの html の div に「oauth-token」の ID で表示します。
  5. UIWebView の - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script を使用して、div の値を取得し、iPhone の設定に保存します。

https://github.com/nxtbgthng/OAuth2Clientも確認してください。

于 2010-12-21T20:14:34.420 に答える
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は- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation、アプリデリゲートのメソッドを呼び出します。
  3. URLからアクセストークンを取得するには:
if ([url.absoluteString rangeOfString:@"access_token="].location != NSNotFound) 
        NSString *accessToken = [[url.absoluteString componentsSeparatedByString:@"="] lastObject];

そのaccessTokenを保存し、すべてのFoursquare呼び出しに必ず含めてください(パラメーター:oauth_token = ACCESSTOKEN)

于 2011-12-09T01:27:45.703 に答える