2015-04-21 11 views
5

Nella mia applicazione, l'utente quando installa l'app, deve compilare un modulo di registrazione. Devo salvare access_token insieme all'istanza utente.Bigcommerce - Come richiedere codice di autorizzazione/token di accesso

Quindi, se l'utente non è registrato, reindirizzo al modulo di registrazione, ad es. Non salvi il token di accesso, ma in questo momento, l'app è registrata. Il che significa, supponiamo che quando l'amministratore del negozio si collega di nuovo all'app, non ottiene di nuovo il codice di autorizzazione, ma ottiene signed_payload.

Poiché, non voglio memorizzare utenti non registrati sul mio database, preferisco chiamare un API, che mi concederebbe codice di autenticazione e/o access_token.

C'è qualche chiamata che posso fare?

+0

In BigCommerce, quando l'app viene installata per la prima volta, BC effettua una richiesta GET a qualsiasi URL specificato come programma di installazione iniziale (l'utente definisce questo URL nella dashboard degli sviluppatori BC). Il tuo programma di installazione iniziale dovrebbe contenere la logica per recuperare il token di accesso e richiedere la registrazione dell'utente. Questo token di accesso è permanente, quindi è necessario salvarlo dalla tua parte. –

+0

Inoltre, si imposta anche un URL separato per il 'carico dell'app ', questo è l'URL che BC chiamerà ogni volta che l'utente apre la propria app * DOPO * è già stato installato. Questo URL dovrebbe puntare al programma che verifica il carico signed_payload e recupera il token di accesso dell'utente dal tuo database. –

+0

Se l'utente installa la tua app, e quindi esiste prima di completare la registrazione, allora avrai un access_token valido per il negozio, ma l'utente non è completamente registrato sulla tua destinazione.In questo caso, il codice 'app load' dovrebbe semplicemente verificare se i campi di registrazione esistono nel tuo database, in caso contrario, quindi significa che l'utente non lo ha compilato, quindi il tuo programma dovrebbe mostrare la pagina di registrazione (mentre è ancora utilizzando lo stesso access_token che hai ottenuto quando l'app è stata installata per la prima volta) e attendi fino al completamento della registrazione prima di mostrare il dashboard principale dell'app. Speriamo in questo modo centesimi –

risposta

1

Dato che non hai specificato un linguaggio di programmazione, ne illustrerò uno in Python.

Ci sono due parti che hai menzionato, token di registrazione/accesso e payload firmato.

Il callback iniziale flusso sarebbe simile a questa:

@app.route('/bigcommerce/callback') 
def auth_callback(): 
    # Put together params for token request 
    code = flask.request.args['code'] 
    context = flask.request.args['context'] 
    scope = flask.request.args['scope'] 
    store_hash = context.split('/')[1] 
    redirect = app.config['APP_URL'] + flask.url_for('auth_callback') 

    # Fetch a permanent oauth token. This will throw an exception on error, 
    # which will get caught by our error handler above. 
    client = BigcommerceApi(client_id=client_id(), store_hash=store_hash) 
    token = client.oauth_fetch_token(client_secret(), code, context, scope, redirect) 
    bc_user_id = token['user']['id'] 
    email = token['user']['email'] 
    access_token = token['access_token'] 

Il flusso utilizzando un payload firmato sarebbe simile:

@app.route('/bigcommerce/load') 
def load(): 
    # Decode and verify payload 
    payload = flask.request.args['signed_payload'] 
    user_data = BigcommerceApi.oauth_verify_payload(payload, client_secret()) 
    if user_data is False: 
     return "Payload verification failed!", 401 

    bc_user_id = user_data['user']['id'] 
    email = user_data['user']['email'] 
    store_hash = user_data['store_hash'] 

Quando inizialmente la creazione di un utente nella vostra database, puoi anche denotare la data di iscrizione attraverso una funzione del tuo codice e quindi fare un cron job periodico per verificare se hanno un account registrato con te. Non esiste un endpoint in cui archiviamo se hanno completato la registrazione con te poiché questa è una funzione della tua app.

0

Per rispondere alla domanda, il token di accesso può essere ottenuto solo al momento dell'installazione iniziale dell'app, quando l'utente installa l'app per la prima volta. Questa è l'unica volta in cui BigCommerce invierà le informazioni richieste per ottenere il token di accesso.

Pertanto l'app dovrebbe sempre salvare access_token al momento dell'installazione. La tua pagina di registrazione dovrebbe essere richiesta dopo aver ottenuto e salvato il token di accesso. Se per qualche ragione l'utente installa l'app e non completa la registrazione, allora dovresti semplicemente controllare sul tuo capo se la registrazione è stata completata o meno, e se non lo fosse dovresti visualizzarlo durante la fase app load come requisito prima di visualizzare il dashboard dell'app principale.

Problemi correlati