Ads API - Custom Audiences - Error Code #U8i8 - error-code

We had a client using the Ads API to upload a batch of phone numbers for Custom Audiences who received the error code #U8i8 without any additional information. Cluster ID was 6006341262522. We also saw the error a while back during initial development and believe it might be somewhat transient even against the same file. Any hints on what this means?

It means that your audience is empty, possibly because of malformed phone numbers. Have you normalized your phone numbers before uploading?
Normalize the phone number by removing any symbols, letters, and any leading zeroes.
Prefix the phone number by country code. E.g., add '1' for a US phone number.

Related

Avoid multiple accounts with same email

I'm working on a website where users receive prizes based on the number of users who sign up with their invitation link (referrals).
Gmail allows their users to use multiple variations of one email. There are three main methods for expanding the number of usable Google email addresses that you can have from a single Gmail account:
Using the #googlemail.com domain.
Using the "dot" or period in your email name.
Using the plus sign "+" at the end of your name and adding extra characters.
So:
myname#gmail.com
myname#googlemail.com
my.name#gmail.com
my.name#googlemail.com
my.na.me#gmail.com
my.na.me#googlemail.com
myname+abcde#gmail.com
myname+123abc#gmail.com
my.name+abcdefg78#gmail.com
my.name+abcdefg78#googlemail.com
are all the same.
I don't want the user to create multiple account with one email to get the prizes. How can I avoid this?
Thanks.
My approach would be - store in a database table the emails that have already signed up. Have a validation step during sign up that checks that table for existing email addresses. If the user-submitted email exists in the table, fail validation and display a message to the user that they've already signed up.
And to avoid people gaming the system, use regex to strip out the extraneous characters before storing it in your database table.
A naive regex implementation might look like (\.|\+[A-z0-9_-]+|oogle) (for .NET). That removes all periods, characters after plus signs, and fixes the gmail / googlemail problem.
It's not perfect, though (it would muck up boogle#gmail.com, for instance), but you can tweak it to your needs and to your actual back end language.

Why do I get a custom audience successful response without actual success?

I am developing an App with the Facebook Custom Audiences API and my match rate is 0% despite a successful response message. I go through each step the same way it is in their documents but none ever match.
First I create the audience through the API, and then add I add a description with the API, both of those work. I even get a successful response when I submit array of email addresses:
{"audience_id":"XXX","num_received":460,"num_invalid_entries":0,"invalid_entry_samples":[]}"
But when I look at the audience in facebook, the audience has the error message "Not ready audience too small." I figured this must be an issue with my hashing steps, which I had copied directly from their documentation. I submitted their example email "mary#example.com" into my app
Facebook example hash: f1904cf1a9d73a55fa5de0ac823c4403ded71afd4c3248d00bdcd0866552bb79
My app's hash value : f1904cf1a9d73a55fa5de0ac823c4403ded71afd4c3248d00bdcd0866552bb79
I even entered the test email address into my app multiple times, so position in the array has nothing to do with the hashing.
My final test was to upload the list manually, to see if there are in fact zero matches. There were 100 matches almost immediately. what gives?
Is there any reason for me to get a successful response besides issues with the hashing?
I'd say the issue was Facebook returning a "success" message because it received the hashed values successfully and can process those hashes without issue. This doesn't imply that the matching is done on Facebook's end or that they got matches.
Rather than have your connection wait while it processes your hashes, Facebook will just make sure everything's OK, return that success message, and then process the hashes offline. This means it could take some time for the hashes to be matched to Facebook users. Oftentimes it's pretty quick, but I've seen it take hours sometimes.
Facebook's audience management API documentation states that it could take up to an hour to add someone to an audience. That applies to each batch of hashes you're sending (since each batch is limited to 10,000 hashes).

iphone app - preventing spam

I've developed an app that allows users to upload some photos and share them on Facebook/Dropbox/Twitter etc. Recently it went live in the app store.
However, I'm having a problem now: a bot is creating accounts and uploading many photos on my server. I've temporarily disabled the app, but now I'm looking for an efficient way to prevent this bot from doing this.
The bot's ip address is changing very often so it's impossible to block the ip. He creates accounts with a very realistic name and email address so it's hard to find out which users are real and which are created by the bot.
I was thinking of using a captcha, but I'm not sure if my app will be rejected by Apple if I implement this. I'm preferably looking for a way so I can prevent him from doing his work and so I don't have to resend the app to Apple again.
Could anyone give me some advice on what I could possibly do?
Thanks!
This is how I solved a similar problem:
I implemented a token-generator, which generates a one-time token for every single data transfer with the server, so even one for login-data, sending a file etc. This token is generated by a secret algorithm and can be verified server side, since you know how you generate one.
After one token is used, put it in a temporary list for the next X minutes/hours/days (depending on how many data transfers your server can handle). When a user tries to send data with a used token (i.e. the token matches one in the "banned" list), you can be sure that someone's trying to spam you -> mark the account as "spammer" and decide what you wish to do.
The algorithm must produce a different token each time (the best way would be a one-way hash), but you have to assure specific "properties", with which you can proof its authenticity.
So one very simple example:
Your algorithm in the client is generating a number between 1000000000000000000000 and 99999999999999999999999, this number is then multiplied with 12456564 and incremented by 20349.
The server becomes a specific command and data, and the generated token. Now it checks, whether (number - 20349)%12456564 is 0. If it's 0, it was likely generated by your "secret" algorithm.
It's a very basic example but you get the idea…

Should I offer the ability to log into my app with a phone number?

I have a web app that you can currently log into with either your email address or your username.
I'm developing an iPhone application and I'm just wondering if I should offer the ability to log in with your phone number. If this is the case, a user would first have to provide the service with a number on the web (an optional parameter).
I find it convenient on other services I use where I might not remember what email I have connected to it.
Is this a good idea?
Would you offer it in a service you were
building?
I'm trying to decide if its worth the trouble to build.
NOTE: This number would strictly be used for authentication.
I think that if your service is not about phone numbers (calling, texting, etc., e.g., whatsapp, etc.) I would not add phone number authentication for a few reasons:
Some users might be deterred to provide a phone number due to privacy concerns (no matter how hard you try to explain them that you will keep it safe)
With the phone number you will now have 3 options to login with, which is way too much. You want to keep your mobile login screen very simple
Some people may think that they might get SMSs from you or get their phone bill charged somehow
Overloads your backend
Just keep it simple...:)
To add to that, I personally prefer just email, without a user name. So many sites require user names AND impose restrictions on how this user name should be structured, so you end up with tons of them. With emails, you can't go so wrong - most people use a primary one to sign up for sites.
Hope that helps.

iPhone SDK: Getting Contact's Name from the Phone Number

Does anyone know if there is a preferred method to find a contact's name in the Address book using their phone number as the key?
It seems that this should be a standard function since it is done in several places by the phone, such as in Recent Calls, Voice Mail list, Incoming Call ID, etc.
Thanks,
Anthony
Unfortunately the only way to do it is to enumerate through all the contacts, enumerate through each contacts phone numbers, and check each one until you find a hit. If you think there should be a built in way to query by phone number directly you should file a feature request.