0

google-api-ruby-clientを使用して CurrentLocation を Google Latitude に更新しようとしています。

アクセス トークンと、モバイル アプリから取得し、Ruby on Rails のサーバーから送信されたリフレッシュ トークンを既に持っています。以下は、私が実行しようとしているコードです。

    client = Google::APIClient.new(:key => gltoken)
    client.authorization.client_id = '<my client id>'
    client.authorization.client_secret = '<my client secret>'

    client.authorization.access_token = "<the access token i ve>"
    client.authorization.refresh_token = "<refresh token i ve>"
    client.authorization.scope ='https://www.googleapis.com/auth/latitude.all.best https://www.googleapis.com/auth/latitude.current.best'

    client.host = "www.googleapis.com"
    latitudeapi = client.discovered_api('latitude', 'v1')

    result = client.execute(
      :api_method => 'latitude.currentLocation.insert',
      :parameters => {
        'kind' => 'latitude#location',
        'latitude'=>37.420352,
        'longitude'=>-122.083389,
        'accuracy'=>130,
        'altitude'=>35
    }
    )

    logger.debug("Response #{result.body}")
    result.body

私は次の結果を得ています:

 {"message":"{\"error\":{\"errors\":[{\"domain\":\"global\",\"reason\":\"invalid\",\"message\":\"Invalid Value\"}],\"code\":400,\"message\":\"Invalid Value\"}}"}

渡す値が無効であることを確認できません。以下と同じ値のセットをhttps://www.googleapis.com/latitude/v1/currentLocation?key=に更新しようとしましたが、うまくいきました。

ヘッダ:

Content-Type: application/json
Authorization: Bearer <My access token>
Host: googleapis.com

体:

{
  "data": {
    "kind":"latitude#location",
    "latitude":37.420352,
    "longitude":-122.083389,
    "accuracy":130,
    "altitude":35
    }
}

前もって感謝します。

4

1 に答える 1

0

gemコードをデバッグした後、答えを見つけました。以下は、呼び出しを行う方法です。

result = client.execute(
            :api_method => 'latitude.currentLocation.insert',
            :body => "{\"data\": {\"kind\":\"latitude#location\",\"latitude\":#{latitude},\"longitude\":#{longitude}}}",
            :headers => {'Content-Type'=> 'application/json'}
         )

Latitude API:bodyの代わりに を探します:parameters

于 2012-08-28T18:10:40.870 に答える