Can't insert a calendar to a user using service account - google-calendar-api

I have a service account setting up with wide domain delegation.
The domain contains about 300 accounts.
For each account, I want to create it own calendar called New_UserName_EDT other than the main calendar (called userName).
And for each New_UserName_EDT's user, I want to create an event depending on the user.
If it's possible, could you please tell me how can I add a calendar to a specific user under a domain using the service account ?.
If not, can I share the calendar New_UserName_EDT created with service account with event event1 (attendee is user1) with the user user1, without selecting the New_UserName_EDTand then on Settings and sharing > Share with specific people section, click on Add people and add user1 as described here ?.
Any suggestion will be appreciated.
Thanks in advance.

Just add required scope:
AclRule rule = new AclRule();
Scope scope = new Scope();
scope.setType("user").setValue("userName#domain");
rule.setScope(scope).setRole("reader");
// Insert new access rule
AclRule createdRule = service.acl().insert(createdCalendar.getId(), rule).execute();
HTH

Related

Avoid linking params during authentication not working in cronofy

I want to create a new account every time user authenticates via cronofy, my link is as below
https://app.cronofy.com/oauth/authorize?
response_type=code&
**avoid_linking=true**&
client_id={clinet_id}&
redirect_uri={redirect_uri}&
scope={scope}
I saw in there documentation for that we need to pass "avoid_linking" params but still every account is created as a profile in previously created account
How to make it work so that every new user is created as a separate account with a new subId
Karl at Cronofy Support here. Once the accounts are linked, we need to unlink them before avoid_linking works as you expect.
Could you please email support#cronofy.com with the email address for the accounts you'd like unlinking, and we will get that sorted for you?
Many thanks
Karl

Adobe Audience Manager - Stitching visitors across devices

Me and my team is new to Adobe Audience Manager and we are trying to figure out ways to stitch visitors cookies across devices (of the same visitor) once user does authentication (for ex: logins).
Have setup Adobe Analytics as well and have done integration to send data from Adobe Analytics to Adobe Audience Manager.
Primarily, we are trying to build a unified visitor's journey which as you would know will have endless benefits once we have it.
Any pointers/information or relevant doc will help a lot. Just ensuring we are moving in the right direction.
Regards,
Adwait
You can stitch user devices together (after authentication) by configuring ID sync and profile merge rules.
Here are the steps that you could follow
Configure a Cross device datasource (for merging online & offline data)
Go to Audience Data > Data Sources > Add New
name the data source as Cross Device ID Sync
Enter the following Integration code offlinesyncid, which is your own, unique ID for this data source.
In the ID Type choose Cross Device
In the ID Definition choose Person
In the Data Export Controls tick the No ristriction checkbox and make sure all other checkboxes are unticked.
In the Data Source Settings tick the Inbound checkbox and make sure the Customer ID radio button is chosen
In the Data Source Settings tick the Outbound checkbox
Make sure the Use as Authenticated Profile checkbox is ticked
Tick the Share associated visitor or device IDs across the Audience Manager platform checkbox
Save the datasource
Note the ID of the datasource you just created as we will use it in the following steps. Let's assume it is 123456
Configure an Online ID Sync datasource
Go to Audience Data > Data Sources > Add New
name the data source as Online ID Sync
Enter the following Integration code sitesyncid
In the ID Type choose Cookie
In the Data Export Controls tick the No ristriction checkbox and make sure all other checkboxes are unticked.
In the Data Source Settings tick the Inbound checkbox and make sure the Customer ID radio button is chosen
In the Data Source Settings tick the Outbound, Share Enabled, and Share associated visitor or device IDs across the Audience Manager platform checkboxes.
Save the datasource
Profile Merge Rule Setup
Go to Audience Data > Profile Merge Rules > Add New Rule
Name the new rule as Last Authenticated with Profile Link Device Graph
in the Profile Merge Rule Setup section choose the Last Authenticated Profiles radio button and tick the Cross Device ID Sync - Person datasource
From the Device Options section, choose the Profile Link Device Graph
Build the ID Sync code on your website
Assuming that you are using the dil.js code here is an example of how you can perform the ID sync
var customerID = "<customer ID e.g. 56789142>"; //Replace the text between the double quotes with your own authenticated customer ID
if (customerID) {
var yoursiteDIL = DIL.create({
partner : "<partner name>", //The partner name given to you by Adobe.
uuidCookie : {
name : "aam_uuid",
days : 30
},
visitorService: {
namespace: "XXXXXXXXXXXXXXXXXXXXX#AdobeOrg" //insert adobe org id here.
},
containerNSID: '0', // Recommended to have this set to zero. However, it could change depending on how many completely separate sites you run.
declaredId : {
dpid : "123456" , //This is the ID of the Cross Device datasource that you just created
dpuuid : customerID
}
});
var c = decodeURIComponent('%01');
var cidObject = {
cid_ic : 'sitesyncid' + c + customerID + c + '1' //this is the integration code you set for the Online ID Sync datasource
};
yoursiteDIL.api.signals(cidObject, 'd_');
yoursiteDIL.api.signals({c_sitesyncid: customerID});
} else {
var yoursiteDIL = DIL.create({
partner : "<partner name>",
uuidCookie : {
name : "aam_uuid",
days : 30
},
visitorService: {
namespace: "XXXXXXXXXXXXXXXXXXXXX#AdobeOrg" //insert adobe org id here.
}
});
}
yoursiteDIL.api.signals({ "signalKey": "signalValue"});
You can try setting up the Adobe Analytics s.visitorID based on the login details.
https://marketing.adobe.com/resources/help/en_US/sc/implement/visid_custom.html

Registering new users via OAuth2 : what to set as user identifier for future log ins?

I have managed to successfully configure this. The problem is, when I change the lines below :
//I have set all requested data with the user's username
//modify here with relevant data
$user->setUsername($username);
$user->setEmail($username);
$user->setPassword($username);
into the information I want to retrive, such as real name, email, my generated password etc, when I click the Login button for Facebook per say, I am asked again if I want to connect with my local testing site.
From what I understand, in the documentation I linked above, this :
$user = $this->userManager->findUserBy(array($this->getProperty($response) => $username));
is the line that checks if the user exists or not, and the initial code by itself, sets either facebook_id or twitter_id (this is how I save them) as a new User *username*. If I change the line
$user->setUsername($username); //same as facebook/twitter _id
into
$user->setUsername(setProperUsername()); //sets a proper unique username
Then everytime I try to login I get the "Register" message. So, I have a general idea of how it works but I am having a hard time understanding some things:
1. When I have registered with Facebook and I login with twitter, I register again, no knew row is created, but missing twitter_id fields are updated/populated, username stays intact. How come HWI/FOSUB knows I am the same person when my previous data were from Facebook not Twitter?
2. If there is a global way of knowing I am the same person, what data from the $response object should I use as a key to identify already registered users?
After testing a lot with this, I have the answer if anyone runs into this type of situation
Check your default_target path, make it so it is /profile, /account etc, don't default to login again. Also, if a user is already logged in, do not make him access your login page. This was why my data was being updated. I was basically logged in with my Facebook account and registering with my Twitter account too.
No, there is no global way of knowing I am the same person. The $response object sent me a unique ID for that specific user according to the provider policy. You might use this to identify already registered users and log them in.

Measuring goals for users who have never logged into my site before

I have a web app. The home page has two main actions:
Sign up to the application
Log into the application
I have a goal set up for sign-ups. I am trying to track the goal conversion rate of users who have never logged into the application before.
The problem I have at the moment is that the conversion rate is being skewed by users who are visiting the homepage simply to log in.
Is there a simple way of doing this?
Thanks very much,
Ben
For the kind of tracking you are looking for, there should be some coding on both your system and Google Analytics.
First, I would recommend you place into your system the intelligence to know the number of log-ins the user has made (As an example, a counter on your database).
Now, to implement that, you will need to set a Custom Var in Google Analytics in a visit level, to segment the users from the non-users, in that CustomVar, you can store both the user ID and the number of logins he has made.
This is the on the login page:
Your Code Should Look Like:
_gaq.push(['_setCustomVar',
1,
'Member Login',
'NUMBER OF LOGINS', // SET THIS FROM YOUR SYSTEM
2 //VISIT LEVEL Custom Var
]);
Remember that this code should go before tracking the pageview.
After setting this up, you should use Advanced Segments to check those specific users, one case could be: (Using the example above)
Setup an Advanced Segment that "Excludes" the Custom Variable (Key 1) - Mathing RegExp : .*
This will give you all the never-loged user access.
Something else you could do is set up Adv Segments to check on a specific number of logins
Setup an Advanced Segment that "Excludes" the Custom Variable (Key 1) - Mathing RegExp : [^1]
This will give you all the users that loged-in more than once.
You can find more info on Custom Vars here.

How does one associate Google Analytics with a particular authenticated user?

What method would you use to associate tracking information in Google Analytics with a particular named user?
I want to be able to do custom reports, and ultimately drill down on usage by user.
EDIT
I was thinking that perhaps the EventTracking API would be able to help somehow.
Also, referring to this documentation.
You could add the user's username as a tracking/segmentation) variable...
pageTracker._setVar(username);
You can only use one _setVar per page, though...
http://www.google.com/support/analytics/bin/answer.py?answer=57045
http://groups.google.com/group/analytics-help-basics/browse_thread/thread/07e29dc610050971
Since Google Analytics isn't aware of users who are logged into your site you'd have to do that sort of tracking within your site's software itself. If there isn't some sort of plugin or extension out there already you'll probably have to write one yourself that keeps track of what your users do when their logged in.
I think you want Google Analytics - Custom Variables. You can set five variables per page, and there is support for variables you set persisting over session and cookie (aka "visitor") lifetime. Take note of the rules for overwriting previous values based upon slot and scope; the documentation explains this with some examples. You should probably include something in a click-wrapped privacy policy about tracking individual users this way; it's somewhat invasive, depending on the purpose of your website.
_gaq.push(['_setCustomVar',
1, // Slot number: [1-5], inclusive. Required.
'Username', // Custom variable name. Required.
username, // Custom variable value. Required.
2 // Scope:
// 1 = visitor/cookie-level, 2 = session-level, 3 = page-level.
// Optional, default=3.
]);
http://www.highlyrelevant.com/2011/03/25/how-to-add-edit-google-analytics-users-to-your-account/
This post was really helpful for me and my team. Not only does it show how to add users, but it also tells you how to edit existing users that aren't setup correctly.
Thanks!
Phil

Resources