4

ROAuth (v0.9.2) を使用して XING API (api.xing.com) に認証しようとしています。

library(package="RCurl")
library(package="ROAuth")

site <- "https://api.xing.com"
requestTokenPath <- "/v1/request_token"
accessTokenPath <- "/v1/access_token"
authorizePath <- "/v1/authorize"

consumerKey <- "***********"    # blank key for posting
consumerSecret <- "********"    # blank key for posting

requestURL <- paste(site, requestTokenPath, sep="")
accessURL <- paste(site, accessTokenPath, sep="")
authURL <- paste(site, authorizePath, sep="")

credentials <- OAuthFactory$new(consumerKey=consumerKey,
    consumerSecret=consumerSecret,
    requestURL=requestURL,
    accessURL=accessURL,
    authURL=authURL,
    needsVerifier=TRUE)

credentials$handshake(ssl.verifypeer=FALSE)  # skip ssl verification for testing, this is passed through to RCurl

出力:

Error in credentials$handshake(ssl.verifypeer = FALSE) : 
  Invalid response from site, please check your consumerKey and consumerSecret and try again.

キーと URL を再確認したので、それがエラーの原因ではないことは確かです。

  1. 誰が私が間違っているのか教えてもらえますか?
  2. エラー分析のためにサーバーの要求と応答を抽出する方法はありますか?

ありがとう、クリス

4

1 に答える 1

3

Hadley Wickhamのパッケージを使用することをお勧めしhttrます。これは、API を扱うときに特に役立つことがわかったからです。そして、関連するすべてのドキュメントを注意深く読むことを忘れないでください...

XING は OAuth v1 を使用しているように見えるので、関連する httr ドキュメントを参照してください。

あなたがすでにこれを知っているかどうかはわかりません...しかし、それはちょっと2段階のプロセスです...

まず、コンシューマー キーとシークレットを XING に送信します。XING はトークンを返します。

次に、次の 3 つすべてを使用します。

1) コンシューマ キー、2) コンシューマ シークレット、3) 提供されたトークン

XING がセットアップしたすべての API 呼び出しにアクセスできますか...ただし、応答を効率的に解釈するには、おそらく XML が必要になるでしょう。

これが機能するかどうかはわかりませんが、次のようなものです。

require(httr)
xing.app <- oauth_app("xing",key="xxxxxxxxxx", secret="xxxxxxxxxxxxxxx")
xing.urls <- oauth_endpoint(NULL, "authorize", "access_token",base_url = "https://api.xing.com/v1/")
xing.token <- oauth1.0_token(xing.urls, xing.app)
xing.token

そのトークンxing.tokenは、その一意のキーと秘密の組み合わせ、つまりそのユーザー用です...しかし、一度取得すると...それを要求し続ける必要はありません....Rprofileファイルなどに保存できます...そして、GET または POST コマンドでオプションとして参照します。

user.signature <- sign_oauth1.0(xing.app, token = token.string.from.xing.token, token_secret = token.secret.from.xing.token)

# so I think as an example you can have this...
id <- "yyyyyyy"
GET(url= paste0("https://api.xing.com/v1/users/",id), config=user.signature)

お役に立てば幸いです....コンシューマーキーまたはシークレットがないため、これはテストされていないため、コードにいくつかのエラーがある可能性があります。私はドキュメントを完全に読んでいませんが、それほど遠くないとは思いません...実際にテストするときは、お気軽に修正して戻ってきてください...

好奇心から...何のために API を使用しているのですか?

于 2013-01-18T12:14:10.113 に答える