2015-04-21 15 views
5

In meiner Anwendung muss der Benutzer bei der Installation der App ein Registrierungsformular ausfüllen. Ich muss das access_token zusammen mit der Benutzerinstanz speichern.BigCommerce - So fordern Sie Autorisierungscode/Access Token an

Also, wenn der Benutzer nicht registriert ist, ich umleiten auf das Anmeldeformular dh. Ich speichere das access_token nicht, aber zu diesem Zeitpunkt ist die App registriert. Das bedeutet, wenn der Administrator des Geschäfts sich wieder bei der App anmeldet, erhält er den Authentifizierungscode nicht erneut, sondern erhält signed_payload.

Da ich nicht registrierte Benutzer in meiner Datenbank speichern möchte, bevorzuge ich das Anrufen einer API, die mir Auth-Code und/oder access_token gewähren würde.

Gibt es einen solchen Anruf, den ich machen kann?

+0

In BigCommerce, wenn die App zum allerersten Mal installiert wird, erstellt BC eine GET-Anfrage an die von Ihnen angegebene URL als das ursprüngliche Installationsprogramm (Sie definieren diese URL selbst im BC Entwickler-Dashboard). Ihr ursprüngliches Installationsprogramm sollte die Logik enthalten, um das Zugriffstoken abzurufen und zur Benutzerregistrierung aufzufordern. Dieser Zugriffstoken ist dauerhaft, Sie müssen ihn also auf Ihrer Seite speichern. –

+0

Außerdem legen Sie eine separate URL für die 'app load' fest, dies ist die URL, die BC aufruft, wenn der Benutzer Ihre App öffnet * AFTER * ist bereits installiert. Diese URL sollte auf das Programm verweisen, das signed_payload überprüft und das access_token des Benutzers aus Ihrer Datenbank abruft. –

+0

Wenn der Benutzer Ihre App installiert und dann vor Abschluss der Registrierung existiert, haben Sie ein gültiges access_token für den Store, aber der Benutzer ist nicht vollständig bei Ihnen registriert.In diesem Fall sollte Ihr 'app load'-Code einfach prüfen, ob die Registrierungsfelder in Ihrer Datenbank vorhanden sind, wenn dies nicht der Fall ist, bedeutet dies, dass der Benutzer sie nicht ausgefüllt hat und Ihr Programm daher die Registrierungsseite anzeigen sollte (solange Verwenden Sie das selbe access_token, das Sie bei der ersten Installation der App erhalten haben, und warten Sie, bis die Registrierung abgeschlossen ist, bevor Sie Ihr Haupt-App-Dashboard anzeigen.Hope this make cents –

Antwort

1

Da Sie keine Programmiersprache angegeben haben, werde ich eine in Python illustrieren.

Es gibt zwei Teile, die Sie erwähnten, Registrierungs-/Zugangstoken und signierte Nutzdaten.

Der anfängliche Rückruf fließen etwa wie folgt aussehen:

@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'] 

Der Fluss mit einem unterzeichnet Nutzlast etwas aussehen würde: Ihr

@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'] 

Wenn zunächst ein Benutzer bei der Erstellung Datenbank, Sie können das Anmeldungsdatum auch durch eine Funktion Ihres Codes angeben und dann einen periodischen Cron-Job ausführen, um zu überprüfen, ob sie ein registriertes Konto bei Ihnen haben. Es gibt keinen Endpunkt, auf dem wir speichern, ob sie die Registrierung bei Ihnen abgeschlossen haben, da dies eine Funktion Ihrer App ist.

0

Um Ihre Frage zu beantworten, kann das Zugriffstoken nur zum Zeitpunkt der ersten App-Installation abgerufen werden, wenn der Benutzer die App zum ersten Mal installiert. Dies ist das einzige Mal, dass BigCommerce die Informationen sendet, die zum Erhalt des Zugriffstokens erforderlich sind.

Daher sollte Ihre App immer den access_token zum Zeitpunkt der Installation speichern. Ihre Registrierungsseite sollte nach dem Abrufen und Speichern des Zugriffstokens aufgefordert werden. Wenn der Benutzer aus irgendeinem Grund die App installiert und die Registrierung nicht abschließt, sollten Sie einfach auf Ihr Ende prüfen, ob die Registrierung abgeschlossen wurde oder nicht, und wenn dies nicht der Fall ist, sollten Sie es während der Phase app load als anzeigen Voraussetzung, bevor Sie Ihr Haupt-App-Dashboard anzeigen.

Verwandte Themen