LinkedIn API 请求返回 404 错误的问题

问题描述 投票:0回答:1

我在使用 Flask-OAuthlib 库与 LinkedIn API 集成的 Flask 应用程序时遇到问题。该应用程序的目的是通过 LinkedIn 对用户进行身份验证并检索他们的个人资料信息。但是,我在尝试发出特定 API 请求来检索用户数据时遇到 404 错误。以下是设置和问题的详细说明:

import io
import json
import logging

import openai
import requests
from flask import Flask, request, jsonify, session, redirect, abort, url_for
from flask_oauthlib.client import OAuth
from pip._vendor import cachecontrol

# Flask app setup
app = Flask(__name__)
app.secret_key = "secret_key"

# OAuth setup with LinkedIn
oauth = OAuth(app)
linkedin = oauth.remote_app(
   'Ety',
   consumer_key='YOUR_CONSUMER_KEY',
   consumer_secret='YOUR_CONSUMER_SECRET',
   request_token_params={
       'scope': ['email', "w_member_social", "profile", "openid"]
   },
   base_url='https://api.linkedin.com/v2/',
   request_token_url=None,
   access_token_method='POST',
   access_token_url='https://www.linkedin.com/oauth/v2/accessToken',
   authorize_url='https://www.linkedin.com/oauth/v2/authorization'
)

# LinkedIn tokengetter function
@linkedin.tokengetter
def get_linkedin_oauth_token():
   return session.get('linkedin_token')

# LinkedIn login route
@app.route('/auth/linkedin')
def linkedin_login():
   return linkedin.authorize(callback=url_for('linkedin_authorized', _external=True))

# LinkedIn authorized route
@app.route('/auth/linkedin/authorized')
def linkedin_authorized():
   response = linkedin.authorized_response()
   if response is None or response.get('access_token') is None:
       return 'Access denied: reason={} error={}'.format(
           request.args['error_reason'],
           request.args['error_description']
       )

   session['linkedin_token'] = (response['access_token'], '')

   access_token = response['access_token']
   headers = {'Authorization': f'Bearer {access_token}'}

   me_response = linkedin.get('/userinfo', headers=headers)  # The problematic request
   me_data = me_response.data
   print(me_response.status)
   print(me_data)

   linkedin_id = me_data['sub']
   session['linkedin_id'] = linkedin_id
   session['name'] = me_data['name']

   return redirect('/')

问题:

me_response = linkedin.get('/userinfo', headers=headers) 行会导致 404 错误。 OAuth 过程似乎可以工作,但检索用户数据的特定 API 请求失败。

预期结果:

我希望 linkedin.get('/userinfo', headers=headers) 请求能够成功从 LinkedIn 的 API 检索用户的个人资料数据,而不会出现 404 错误。

附加信息:

Flask-OAuthlib 用于 OAuth 身份验证。 应用程序的 LinkedIn API 凭据(消费者密钥和秘密)已正确配置。 请求的范围包括电子邮件、w_member_social、个人资料和 openid。 请注意,由于特定的 LinkedIn API 限制,请求的范围 r_emailaddress 和 r_liteprofile 未包含在范围列表中。 任何解决此问题的见解或解决方案将不胜感激。谢谢!

python flask linkedin-api
1个回答
0
投票

通过阅读文档,我发现了这里

您需要将其替换为以下代码。

me_response = linkedin.get('/me', headers=headers)

一定要尝试一次!

© www.soinside.com 2019 - 2024. All rights reserved.