Implement "find users in my addressbook" for mobile app - sql

I am building a messaging app, and I am looking to implement the basic functionality where a user can see which people in their phone's address book are already users of the app.
My plan is to have a very simple database of just hashes of all the users phone numbers. Then I could query an array of hashed phone numbers from the user's address book against this database.
What is the best cloud database solution for this task?
Is this best implemented with SQL or NoSQL?

After consulting with a friend who is knowledgeable in this area, he suggested PostgreSQL for this case.

Related

Getting Windows 8 Contact Info Without Picker

I have reviewed the few number of windows 8 contact questions on here, as well as the MSDN Contact picker sample and couldn't find an answer to my question.
It seems like, from most answers, the only way to get contact information from the people contract is to have the user manually choose the people they want the information for.
That doesn't seem completely right, since in the mail and messenger apps, they have found a way to get contact information for people that email or IM you without me choosing those people.
How do you go about accomplishing this programmatically? I would like to be able to pull either all contact data at once or get contact data by looking up specific emails linked to those users.
I would assume that in the Mail, People and Messaging apps, they are using details pulled straight from the users Windows Live account. I think you should be able to do this in your app, look here for documentation on the Live SDK: http://msdn.microsoft.com/en-us/library/live/
I don't think it is possible to do this right now without a Picker. This would vioalate some security restrictions. But if you find a way, please post it here.

How to access Contacts in Windows 8 People app from another app

Does anyone know how to access Contacts in Windows 8 Store apps?
I know that because of the sandboxed nature, Windows Store apps cannot access AddressBook from files such as Outlook Express contacts or Outlook, but since there is already an app called People that comes pre-installed, I figure why not let users make use of whatever Contacts the user has already allowed the app to see, rather than creating separate list of Contacts for my app. It seems silly to recreate the wheel by asking the user to re-import all the contacts again.
I have seen Contact Picker example but I still have no clues how to get list of Contacts/People as in that People app.
I have not developed for mobile phone, however if the device is a mobile phone, surely the app is expected to use local contacts rather than keeping separate list of contacts. So I am thinking there's got to be a way to do the same thing on a PC or any device really, rather than each app managing its own contacts. I have not seen any guidance on how to do this. What are your thoughts?
I asked a similar question a few days ago and, after a lot of research, it looks like it's just not possible to get that information from the people app outside of the contract. The reason that it works within calendar/mail/messenger is because they're all technically contained within the same app and are able to use each other's data and violate normal rules.
A lot of people have pointed me to look at the live SDK, but it still seems like it's not at all possible to get people information in your app, since the SDK doesn't support it anymore.
Look at the ContactPicker class :
http://msdn.microsoft.com/en-us/library/windows/apps/br224913.aspx
Another way is to share your resource or whatever you want to send and user will choose an app that will send or on any another way use your shared resource (url, image, whatever)
IMO the latter is preferred way since then user will have a choice of applications that can send mail or post that resource on facebook / twitter.
Check this sample on ContactPicker

How to validate the content of a user account?

We would like to build a website as a communication platform between Native and Non-Native K-12 students. An example is that Non-Native student can ask questions to Native students and Native students can reply. Another example is that we hope Native students can write blogs or upload images and videos to let people know what is going on in tribes.
We are stuck in designing a website that can work. We have to make sure the text and multimedia from Native students are indeed from Native students. We believe that students need to have accounts at the website. The problem is how to make sure a Native student account is indeed a Native student account. The same goes for Non-Native student accounts. Now matter what the validation approach is, we need to make sure the approach is scalable because there are so many Native and Non-Native students out there.
The only idea I have for this would be you'd need a government ID validation service upon registering. Other than that you can ask for zip or address and validate based on that, but that's not really reliable.

What are the best practices for managing multiple users on an iPad app?

What are the best practices for setting up multi user functionality in an iPad app?
I am trying to start an ios project for iPad which will create new username, and password, as well as managing different users on a given device locally on the iPad in order to access the app itself. Something like what keeper does when you first open the app comes into mind.
What are the most suitable practices for achieving something like this? Can anybody point me in the right direction?
The solution I opted for is to create a table with Core Data and store username and a mod5 representation of the password. Unfortunately everywhere I looked it showed that keychain only saves passwords for what it assumes to be the only user using the device.
You can use Sci-fi Hi-fi keychain utils, which is a sweet wrapper around Keychain. It allows storing passwords on a per-user and per-service basis. I'd advise storing your usernames somewhere (CoreData, maybe) and then querying through SFHF to see if the password's valid.

Design an API for a web service without "selling the farm"?

I'm going to try to phrase this as a generic question.
A company runs a website that has a lot of valuable information on it. This information is queried from an internal private database. So technically, the information in the database is the valuable part.
If this company wished to develop an API that developers could use to access their database of valuable & useful information, what approach should the company take?
It's important to give developers what they need. But it is also important to keep competing websites from essentially using the API to steal everything and essentially steal all traffic from the company's website.
Is there was some way the API could be used in a way that drives traffic back to the original company's website somehow? Something that gives users a reason to keep going there.
This is a design consideration that my company is struggling with that I can imagine other web-based services have come across before.
Institute API keys - don't make it public. Maybe make the signup process more complex than "anyone with an e-mail address".
Rate limit the API based on keys. If you're running more than X requests a minute, you're likely mining the database.
Don't provide a "fetch everything" API. Make the users know something to get information on it. Don't reveal what you know.
I've seen a lot of companies giving out API keys and stating a TOS that all developers must adhere to. For example, any page that uses data from the API must include your logo and a link back to your website. If any developer is found breaking the rules, the API key can be cancelled and your data is safe again.
Who is meant to use the API?
A good general method of solving this problem is to limit access to the data to end users (rather than allow applications or developers at it). Provide applications and users with identification, each, and make sure that to access a subset of the data, a combination of both user and application key is required.
Following this pattern, each user will have access to a very limited subset of the data (presumably, the data that they require for their own specific use), and you can put measures in place to enforce this. Any attempts at data-mining will become obvious.
This type of approach meshes well with capability-type security models on the server side.