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)
リエンゲージメントの自動化で売り上げ向上へ!素敵なオンラインストアを作成し、見込み顧客の携帯へ広告を直接に送信する、またはSNSなどで宣伝すると、お客様がストアに行き着...
By Mirai Mar 24, 2024Shopifyは世界で最も革新的なブランドと起業家をサポートしています。個人起業家やあらゆる規模のビジネスの成長を後押しするために、Shopify アカデミーではShopif...
By SarahF_Shopify Mar 22, 2024オンラインストア運営はとてもやりがいのある活動です。新しい注文が入った時の喜びや世界中のお客様とやりとりできる可能性、商品に対して最高のレビューをもらった時の満足感は、毎日の...
By Mina Mar 13, 2024