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 アカデミーの学習パスと認定スキルバッジExpanding Your Shopify Business Internationallyを活用して、国際的にビジネ...
By Shopify Feb 7, 2025Shopify アカデミーの学習パスB2B on Shopify:立ち上げとカスタマイズで卸売販売に進出しましょう。これら3つの無料コースは、ShopifyストアでB2B機能...
By Shopify Jan 31, 2025サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 6, 2024