How to create a Salesforce app like Mailchimp - salesforce

I am looking to create a Salesforce app like mailChimp (https://appexchange.salesforce.com/listingDetail?listingId=a0N3000000B3byfEAB) have. I want to create an interface under the salesforce to allow the user to do some field mapping, Just like Mailchimp app allow to map the Mainchimp field and Salesforce Contact fields. I have gone thought the Salesforce documentation but found it very vast not getting where to start and did not found which kind of scripting it require to create the app.
I have a developer and a partner account. If any one can put some light on it and give me some short answer for the below question will be really helpful.
Where to start for creating an slesforce app.
The app we create from the Salesform CRM account and app listing on AppExchange is different?
Is this apps are hosted on salesforce itself or hosted in our own server?
Which scripting language is required to code the Salesforce app?
Can we call the external API's inside the Salesforce app?

After asking question, I also work on this to get the answers for my question. I am sharing my RND below, So it may help someone and can save their time.
Here is the complete document link for the app creation and publishing on app Exchange, you can go thought it and find all the answers step by step.
So below are the very short answers of the question I asked.
Where to start for creating an slesforce app.
Step 1: Sign Up for the Partner Program
Step 2: Create a Development and Test Environment
Step 3: Get a Business Org
After doing the above 3 steps you can get a environment hub into Business Org, By which we can create different organization to create the app in one org (that is dev org) and install and test into the other org( that is test org).
The app we create from the Salesform CRM account and app listing on AppExchange is different?
Yes, From Your CRM account you can create the app, package the app in beta version. Once you done the testing with beta app by installing it into your Test Org you can deploy it for app exchange, After security review you app will be available into app exchange publicly. You can do it from your salesforce CRM account itself (See the above doc for more details)
Is this apps are hosted on salesforce itself or hosted in our own server?
There are two types of app:
1.VisualForce Pages app: This app is besically a collection of VisualForce Pages and reside or hosted into the saleforce itself.
2.Connected App: Connected app also includes the VisualForce pages as need but it also provide the client id and client secret key by which we can authenticate the user and call the Salesforce REST API from the outside of the CRM. So we can say this is something we can host the API access code into our own server.
Which scripting language is required to code the Salesforce app?
For Coding into the VisualForce pages we required Salesforce Apex Scripting and HTML.
Can we call the external API's inside the Salesforce app?
Yes, Using the Apex HTTP class we can call the external API's into the salesForce.
Hope this will help someone.

Related

Build salesforce integration like hubspot or workbench

I'm created a connected app in salesforce and consume contacts in my application, but for this, a need a consumer key from connected app.
I would like to create an application that consumes my customers' contacts without them having to create a connected app and generate a consumer key, in order to access their list
I saw this in a hubspot integration in salesforce, where it was possible to install a hubspot package and consume the contacts, I tried to create something on the appExchange but I was unsuccessful.
Can anyone tell me a tutorial for this? I've been searching for days and I can't find anything.
without them having to create a connected app and generate a consumer
key
Good. They don't have to. Have you actually tried connecting with 1 org's client id/secret to another org? Have you hit any issues?
Think about it. You're making a new awesome mobile app that connects to Salesforce. You'll want to make it work just like that, on any phone, any SF org, without org admins having to do any installation steps. You can generate OAuth2 keys in any org, even your personal Developer Edition. You could generate them in sandbox - but they'll be deleted when you refresh it.
Check if my answer https://stackoverflow.com/a/69810951/313628 helps you understand the whole thing.
Now, there might be some things you do want in every org, maybe some config custom table... You'd have your mobile app and then maybe a Salesforce plugin published on AppExchange. But that's battle for another day and you don't need it for basic functionality.

Unverified app screen in google Cloud

I am hosting some Web Applications in Google Cloud Platform using App Engine and those are for internal purpose only. One month ago I got a mail from Google Cloud Team, saying one of my apps needs verification. By based on their response I did some research and finally migrated all apps to the Organisation level as they mentioned in documentation (below link for reference). https://support.google.com/googleapi/answer/7394288#gsuite-app
But, yesterday also I got another notification regarding the same.
May I ignore this notification, or are there any further steps I need to complete?
As stated in this other documentation page:
If you're creating an internal web app for which [...] your project is
associated with a Cloud Organization that your users belong to, you
don't need to go through verification. Internal users of your
application won't see the unverified app screen.
If your application will only be used by internal users belonging to the same organization as where your project is located, you can ignore this message. It was probably triggered by the fact that your application is indeed not verified (although you do not need to do so).
So if that is the case, you will only need, as stated in the link you shared, to create an Organization and then migrate your existing project to that organization (then make sure that the users who will be accessing the app belong to the same organization).

Can I set up a web form that will populate an opportunity in my salesforce

I have a site I sent my clients to who want to move forward with our order process and I want the information they submit to automatically fill in the form under the opportunity. I was wondering how this was possible. I know you can set up a web to lead form but I dont see this option for what I want to do.
There is no native Opportunity feature equivalent for Web-to-lead or Web-to-Case. You do have a lot of options though (ordered from simplest to most complex).
Use an app on the AppExchange that provide web-to-x functionality.
Use a pre-built connector for popular CMS apps to integrate with Salesforce.
Create a Visualforce Page hosted on Force.com sites and then embed that on your website
Create an Apex Web Service hosted on Force.com sites that can be posted to by your form
Write code on your web platform to post to the Salesforce API.

Is it possible to access Google Play Game Services API with service account?

I've created the game thru Google Play Developer Console (it is ready for testing, but not published yet).
Two service accounts are added there as testers - myappid#appspot.gserviceaccount.com (Google App Engine service account) and 64436212345-enq9gkd1abcdefghjec2kha39je5ojsc#developer.gserviceaccount.com (manually created service account, it was created before an access to Google Play Game Services API was given). First one is used for production GAE environment, second one is for development environment (run with --appidentity_email_address). Both accounts work well with Google Analytics API.
Now I try to use these accounts to work with Google Play Game Services API.
The following code is used for authorization and works fine:
credentials = AppAssertionCredentials(scope=['https://www.googleapis.com/auth/games', 'https://www.googleapis.com/auth/plus.login'])
http = credentials.authorize(httplib2.Http(memcache))
But I am getting an error when trying to access achievements definition (also tried to get application metadata - got the same issue):
response = service.achievementDefinitions().list().execute()
In development environment I get
<HttpError 404 when requesting https://www.googleapis.com/games/v1/achievements?alt=json returned "The requested application with ID 64436212345 was not found.">
and in production:
<HttpError 500 when requesting https://www.googleapis.com/games/v1/achievements?alt=json returned "">
What is wrong there? Are service accounts supported by Google Play Services API?
Upd. Further analysis showed that 64436212345 is an ID of my GAE application, when an ID of my Google Play application is 760943112345.
So, I went to Google Developer Console for application 760943112345 and added 64436212345-enq9gkd1abcdefghjec2kha39je5ojsc#developer.gserviceaccount.com and myappid#appspot.gserviceaccount.com as the member their. It didn't help.
Then I generated new service account ID there and run GAE locally with this service account. In result, I've started to get
<HttpError 401 when requesting https://www.googleapis.com/games/v1/applications/760943112345?alt=json returned "User has not completed registration.">
Of course, my service account doesn't have Google+ profile.
I am also struggling with service accounts and Google game services, and am stuck at the same point (my service account doesn't have a G+ account).
The only indication I have found in the Google literature (supposedly Updated Jan 22, 2014) says service accounts are not supported:
Warning: Very few Google APIs currently support Service Accounts. Service accounts are >currently supported by the following Google developer services:
Google Cloud Storage
Google Prediction API
Google URL Shortener
Google OAuth 2.0 Authorization Server
Google BigQuery
This is embedded in some google api php client documentation however, so I cannot attest its validity.
Let me know if you have any luck getting this to work and I'll do the same!
Edit: here is the actual answer:
You have to create another API project and link it to your game's project, as explained in Getting Started with the Google Play Games Services Publishing API. The service accounts that you add to your game's project won't work. Also, you have to add this new API project through Google Play Developer Console, and not through Google Developers Console. As far as I remember, you go to the latter to get your key only. This whole situation took me forever to figure out.
I'm keeping the below text for future reference:
Edit: I wrote the answer below, thinking that you did not talk about the Publishing API. But you are, it seems. Or an earlier version of it. I hope the below answer will be useful for people looking to access Management API with a service account:
I struggled with the same and concluded that service accounts do not work with the GPGS Management API, which is the API that deals with achievements and things of that sort. Here are the facts that I used to reach this conclusion:
The only place in GPGS docs that service accounts are mentioned is the Publishing API.
Management API Docs contains descriptions for each function about the authorization requirements such as: "This method is only available to user accounts for your developer console.", while Publishing API Docs have no such descriptions.
The sample app for Management API does not use a service account.
It would be nice if this was a bit clearer in the GPGS docs. The generic Google Cloud docs that they link from GPGS pages made me believe that service accounts would work.

An API for creating and managing Google Cloud Console projects?

I believe there is an undocumented Google API available to create and manage Google Cloud Console (and App Engine) projects on behalf of third party users.
Does anyone know how to use it?
I think older versions of the Google Eclipse Plugin obtained an OAuth2 token in the (undocumented) scope https://www.googleapis.com/auth/appengine.admin, and this allowed it to generate a Cloud Console project on your behalf. The latest version doesn't seem to do this. App Engine's own appcfg.py also uses this scope, but doesn't seem to do much more than deploy the code - I'm looking to change core settings for the project, such as Name, Redirect URLs, and Web Origins.
Any information would be appreciated.
I maintain a WordPress plugin providing secure Google Apps Login for end users, and currently have to give detailed instructions to admins for creating a new Cloud Console project manually, and entering settings such as Redirect URL. Ideally, I would create a simple on-line service to do all of this for them.
Thank you!
It is possible to programmatically create a new Developer Console project on behalf of a Google Account (yes, you read that right). You do so in a very roundabout way:
Request the https://www.googleapis.com/auth/drive.scripts scope from the user (standard OAuth 2.0 flow).
Use the Drive API's drive.insert method to create a new file with a mimetype of application/vnd.google-apps.script.
Somehow try to get the project ID, maybe by uploading some Apps Script code? This is the part that I was never able to figure out.
A little known fact is that every Google Apps Script project has a hidden Developer Console project associated with it. This project is not shown in the list of projects, but it does exist. It is created automatically when the user starts a new Apps Script project, and the drive.insert method is enough to cause this to happen.
How do you get to the hidden project? Well, the only way I know of is to open the Apps Script project from the Drive website, open the "Resources > Advanced Google Services" dialog, and click the link to the Developer Console. You'll find the project ID in the URL.
Aside from not being shown in your list of projects and not being able to use App Engine, this is a normal Developer Console project. You can add additional OAuth client credentials, service accounts, Compute Engine instances, etc. And of course once you have a project ID, all of the various management APIs will work: creating new virtual machines, making use of a service account's impersonation ability, etc.

Resources