1

ユーザーが LinkedIn プロファイルに更新を投稿できるようにする Rails (3.2.11) アプリケーションがあります。現在、omniauth-linkedingem を使用して初期ユーザー認証をキャプチャし、gem を使用しlinkedinて更新を投稿しています。私が抱えている問題は、LinkedIn アクセス トークンが 60 日後に期限切れになることですが、ドキュメントによると、ユーザーがアプリケーションを再承認することなく、有効期限が切れる前にトークンを更新できます。

LinkedIn のヒントとコツ認証の概要、および StackOverflow に関する多数の投稿 (これこれ、およびこれはほんの一例です) を見てきましたが、まだ答えが見つかりません。

ユーザーが (経由でomniauth-linkedin) アプリを承認した後、私は を保存し、access_tokenLinkedInsecretから戻ってきました。access_tokenまだ有効なものを使用して更新し、有効期限をさらに 60 日間延長する方法を理解する必要があります。

LinkedIn の認証エンドポイントを使用してみました (tokens.access_token現在有効なトークンはどこにありますか):

url = "https//www.linkedin.com/uas/oauth/authenticate?oauth_token=" + tokens.access_token
result = RestClient.post(url, {oauth_callback: "http://localhost:3000/users/auth/linkedin/callback"})

しかし、undefined method 'request_uri' for #<URI::Generic:0x1b144d20>例外が発生します。

OAuth::Consumer クライアントを使用してみました (現在有効なトークンはtokens.access_tokenとです):tokens.token_secret

configuration = { site: 'https://api.linkedin.com', authorize_path: '/uas/oauth/authenticate',
                  request_token_path: '/uas/oauth/requestToken', access_token_path: '/uas/oauth/accessToken' }
consumer = OAuth::Consumer.new(ENV['LINKEDIN_APP_ID'], ENV['LINKEDIN_SECRET'], configuration)
access_token = OAuth::AccessToken.new(consumer, tokens.access_token, tokens.token_secret)

しかし、これは私に同じことaccess_tokenを返すだけですsecret.

omniauth-linkedin最後に、既存のgem 機能を活用してこの更新を処理できるようにしたいと考えています。ありがとう!

4

1 に答える 1

4

2番目のアプローチ(OAuth :: Consumerクライアントを使用し、既存のアクセストークンとシークレットを渡す)では、トークンを更新する必要があります。ドキュメントに記載されているように、現在のユーザーがLinkedIn.comにログインしていて、現在のアクセストークンの有効期限がまだ切れていない限り、トークンは更新されます。

それは必ずしもあなたが新しいトークンを手に入れるという意味ではありません。あなたは以前と同じものを手に入れるかもしれません。主な違いは、トークンの有効期間が60日であることです。これは、 oauth_expires_inパラメーターの値を確認することで確認できます。5184000に設定する必要があります。

このブログ投稿では、トークンの更新について詳しく説明しています:https ://developer.linkedin.com/blog/tips-and-tricks-refreshing-access-token

于 2013-01-16T00:33:22.987 に答える