Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

How to specify that headers must be regenerated.

Ouverte
#126 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
25/100
Type d'issue
Fonctionnalité
Clarté
À clarifier
Activité
À l'abandon
Stack technique
github, python
Domaine
api, authentication

Piste de recherche

Commencez par retracer comment les requêtes GhApi atteignent l'appel de niveau inférieur plutôt que GhApi.call, en utilisant la sous-classe présentée et IatManager.headers() comme points d'entrée. Déterminez où les en-têtes de requête sont assemblés et s'ils peuvent être actualisés pour chaque requête ; le travail est terminé lorsqu'une application GitHub exécutée sur une longue durée peut utiliser des en-têtes de jeton d'accès d'installation nouvellement générés sans recréer manuellement GhApi.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

I've have a GitHub app which uses a jwt that can expire. Ultimately, I generate an installation access token that can also expire and I am trying to use ghapi with that installation access token.

I was hoping that I could subclass GhApi.__call__ to dynamically generate my access token, but this does not seem to work.

jwtm = JwtManager(app_id, private_key)                                                           
iatm = IatManager(jwtm)                                                                          
token = iatm.token(installation_id)                                                              
gh_host = baseurl()                                                                         
                                                                                                 
class GhApi(ghapi_all.GhApi):                                                                    
    def __call__(self, path, verb=None, headers=None, route=None, query=None, data=None):        
        headers = headers or {}                                                                  
        headers.update(iatm.headers(installation_id))                                            
        super().__call__(path, verb, headers, route, query, data)                     
                                                                                                 
api = GhApi(                                                                                     
    owner=owner,                                                                                 
    repo=repo,                                                                                   
    token=token,                                                                                 
    debug=debug,                                                                                 
    limit_cb=limit_cb,                                                                           
    gh_host=gh_host,                                                                             
)             

IatManager.headers() will generate a new jwt token whenever it is expired and then will use this to generate an access token for the specified installation id. The headers it generates look like this:

In [5]: iatm.headers(2)
Out[5]:
{'Authorization': 'token ghs_randomstuffhere',
 'Accept': 'application/vnd.github.v3+json'}

The reason that this did not work is that ultimately GhApi.__call__ is not what was called. Rather it was some lower level thing. Any suggestion on how I can use ghapi for a long-running GitHub app where the headers need to be dynamically updated in time?

Langage dominant
Python
Étoiles
687
Forks
69
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de AnswerDotAI/ghapi

Toutes les issues de AnswerDotAI/ghapi

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.