我正在尝试使用其API版本2.1将用户添加到Facebook自定义受众群体。
我正在使用此Python脚本创建新的受众群体,并向其添加用户。
import json, requests
# set up params
account_id = 'an ads account ID'
audience_name = 'a new name'
token = 'a valid access token'
# create a new audience ID for posterity
url = "https://graph.facebook.com/act_" + account_id + "/customaudiences"
response = requests.post(url, {"name": audience_name, "access_token": token})
resp_dict = json.loads(response.content)
audience_id = resp_dict["id"]
# output new audience name and ID
print("For audience name of:", audience_name)
print("Created audience ID of:", audience_id)
# add email addresses to the audience
the_file = open("the.payload", "r")
payload = the_file.read()
the_file.close()
url = 'https://graph.facebook.com/v2.1/' + audience_id + '/users'
params = {"access_token": token, "payload": payload}
response = requests.post(url, params=params)
# output results
print("Response status code:", response.status_code)
print("Response content:", response.content)
“the.payload”内容的样本是:
{"data":["a8649fb702fb0a67e21ed5120a589cf4d15dd59e2eebb1ad606485731b124100","4842b7883df3c9048abbff1fddb3fd634bed474450f8b2b9102c4bf76fc33381"],"schema":"EMAIL_SHA256"}
除了在我的文件中,不是只有2个有效的电子邮件地址已被格式化为SHA256,而是根据他们的文档按照十六进制编写,我有1100个。
当我运行此脚本时,我会收到:
('For audience name of:', 'the name I gave')
('Created audience ID of:', u'a valid ID number')
('Response status code:', 200)
('Response content:', '{"audience_id":"a valid ID number","num_received":1100,"num_invalid_entries":0,"invalid_entry_samples":[]}')
但是,超过一个小时后,UI中显示“未就绪,文件未上传”,以便使用此方法完成100%的上传。
有人能告诉我如何更正我的代码以成功将用户添加到自定义受众群体中吗?我已经广泛审查了Facebook的文档,但我相信我正在遵循他们的格式。
答案 0 :(得分:4)
这是我的哈希算法的一个问题。
发布此消息后,我收到了一份证明有效的电子邮件散列算法副本。就是这样:
import hashlib
email = "somebody@somewhere.com"
email = email.strip().lower()
email = hashlib.sha256(email).hexdigest()
我将这里产生的哈希与我自己的哈希进行了比较,但它并没有相同。通过剥离空格而不是在循环中重用哈希来纠正它之后,这个问题就解决了。
因此,Not Ready可能是由于幕后的哈希问题造成的,或者上传包含的有效和无效的内容太少。匹配电子邮件地址。