Liquid、JavaScriptなどに関する質問
pythonコード内でgraphQLを使って注文情報等を抜き出す方法を模索しています。
公式ドキュメント , 公式ドキュメント(Git) と質問箱 を読んで実行しましたが,うまくいきません。
srcはGoogle Colaboratoryで実行しました。記入したsrcは以下の通りです。
!pip install --upgrade ShopifyAPI
import shopify
import bin
import json
import urllib
API_KEY = "api_key"
PASSWORD = "passward"
SHARED_SECRET = "secret"
API_VERSION = '2020-07'
SHOP_NAME = 'name'
shop_url = "https://%s:%s@%s.myshopify.com/admin/api/%s/orders.json" % (API_KEY, PASSWORD, SHOP_NAME,API_VERSION)
shopify.ShopifyResource.set_site(shop_url)
print(shop_url)
client = shopify.GraphQL()
query = '''
{
shop {
name
id
}
}
'''
result = client.execute(query)
b'{"errors":"[API] Invalid API key or access token (unrecognized login or wrong password)"}'
---------------------------------------------------------------------------
HTTPError Traceback (most recent call last)
<ipython-input-6-3a68f3acabbf> in <module>()
37 }
38 '''
---> 39 result = client.execute(query)
解決済! ベストソリューションを見る。
成功
1.graphQLはbasic認証ベースに対応してない様です
マニュアルで前後が読みづらいですが、6の欄にあるコマンドはあの流れで実行出来ますが、graphQL部位は違う操作が必要みたいです。
2.graphQLの認証は、X-Shopify-Access-Tokenベースみたいです。パスワードをどう渡すかは忘れました・・
https://shopify.dev/docs/admin-api/graphql/getting-started
のcurl文参照でお願いします。
3.なので、参考にされるサンプルは、下記graphqlのtestが良いと思います
https://github.com/Shopify/shopify_python_api/blob/master/test/graphql_test.py
補足説明
”作成されたURLをブラウザで直説打ち込むと画像のような認証画面が出てきて,”の話ですが,
作成されたURL(API KeyとPASS入り)を開くと問題なく閲覧可能。 https://shop.myshopifyだと認証画面が出てきて,API KeyとPASS打ち込むと認証通過。
つまりAPI KeyとPASSは有効であることが確認されています。
成功
1.graphQLはbasic認証ベースに対応してない様です
マニュアルで前後が読みづらいですが、6の欄にあるコマンドはあの流れで実行出来ますが、graphQL部位は違う操作が必要みたいです。
2.graphQLの認証は、X-Shopify-Access-Tokenベースみたいです。パスワードをどう渡すかは忘れました・・
https://shopify.dev/docs/admin-api/graphql/getting-started
のcurl文参照でお願いします。
3.なので、参考にされるサンプルは、下記graphqlのtestが良いと思います
https://github.com/Shopify/shopify_python_api/blob/master/test/graphql_test.py
共有されているBASIC認証のURLは、マーチャント側で作成されるPrivate appのもので、REST API用のものですので、GraphQLには対応しておりません。
Pythonから呼び出す場合は、他の方が共有されているコードか、以下の動画で解説していますように直接HTTP POSTで呼び出せますので、ご参照ください。
https://www.youtube.com/watch?v=2zDFNS6r1aQ&list=PLkR3LRtxAZfod8TvcsKU7IEWeAO5fhcOe&index=1
最終的には,以下のコードで解決しました。
import shopify
import pandas as pd
import json
from pandas.io.json import json_normalize
from googletrans import Translator
import glob
import csv
import os
import sys
import re
# shopドメイン&API ver&Passwordで認証
domain = "NAME.myshopify.com"
API_ver = "2020-07"
PASSWORD = "12314"
shopify.ApiVersion.define_known_versions()
shopify_session = shopify.Session(domain, API_ver, PASSWORD)
shopify.ShopifyResource.activate_session(shopify_session)
client = shopify.GraphQL()
query = '''
{
orders(first:20){
edges{
node{
closed
name
}
'''
result = client.execute(query)
Shopifyのチェックアウトは世界一コンバージョン率が高いチェックアウトです。2023年4月に実施された世界3大手マネジメントコンサルティング会社の共同調査によると、Sho...
By Minami_ Apr 11, 2024Shopifyのルーツ Shopifyは、スノーボードをオンラインで販売したいという夢を叶えるために2004年に誕生しました。当時は大企業だけがインターネットで販売す...
By JapanGuru Apr 7, 2024リエンゲージメントの自動化で売り上げ向上へ!素敵なオンラインストアを作成し、見込み顧客の携帯へ広告を直接に送信する、またはSNSなどで宣伝すると、お客様がストアに行き着...
By Mirai Mar 24, 2024