There appears to be a bug with the way the library (version 39697) handles session expiry times. In DateHelper.ConvertUnixTimeToDate, the unix timestamp is being converted to UTC and then being converted to pacific time. Then in CanvasSession.HaveValidCachedSession
the expiry time is being compared to DateTime.UtcNow which means the session will not always be processed as a valid session. There is no need to convert the timestamp to pacific time, instead it should be converted to UTC. I have changed ConvertUnixTimeToDateTime
to the following...
public static DateTime ConvertUnixTimeToDateTime(long secondsSinceEpoch)
This has fixed the issues I was having with session expiry.