Gmail API 自动登录 swift
Gmail API autologin in swift
我正在使用这个例子
Gmail Api
我试图找到一个合适的 api 方法来做到这一点,但没有成功。
我想到将凭据保存在 NSUserDefaults 中并手动将它们添加到 service.authorizer。
这有效,但在大约一个小时后我回答:The operation Could not be completed. (Invalid Credentials)
。
不知道有没有刷新这些凭据的功能
终于找到解决方法了
我维护 NSUserDefault 功能
curl -d "client_id=yourClientId&client_secret=yourClientSecret&refresh_token=yourRefreshToken&grant_type=refresh_token" https://www.googleapis.com/oauth2/v3/token
响应是这样的:
{
"access_token": "ya29.KALxxxxyvE5PI3-s6oBAP74uGFE8rOhho5XYfvExfU3lxHdX23HWbKlkR4YI1xxxx",
"token_type": "Bearer",
"expires_in": 3600,
"id_token": "xjc4ZDg3NWY5MDA5YzMzZjFlODljOGExMDFjM2UwNDMyNWQ2YmQ0MTEifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXRfaGFzaCI6InRJWVE0b2pBZfNyRlJXdFEiLCJhdWQiOiIyMDM3MjIwMDA2NzMtdGIwamF1OWhwamFsa21yaHFxcDkybnBxamo2ZjhkcWcuYXBwcy5nb29nbGV1c2VyY29udGVx1ODM5MTE5MDk0OTAzMjg3NjAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXpwIjoiMjAzNzIyMDAwNjczLXRiMGphdTlocGphbGttcmhxcXA5Mm5wcWpqNmY4ZHFnLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiaGQiOiJ2b3ZdwiZW1haWwiOiJqZ29uemFsZXpAdm92c29sdXRpb25zLmNvbSIsImlhdCI6MTQ0NzE2OTU5NSwiZXhwIjoxNDQ3MTczMTk1fQ.gZiYdgEPhYkQTvjgxugaMaXTIH3652_E_3h_khHgaKFA56ko3VqBF9qlzJ-1LDIoTO8G2eQWa6ncE7aEwLvxelZ8429iJUCIH-1cmeuck_LWpFIdQ9sQN8u4I7ABTRWPpZ3vL8nXMNmPGynvCDWimffYCGWeVZGs3uv0O7pFftqIKMJchVk_WyC5fm9i8m-cGPN-UcrvgZKrFEOMydvF83HQzIR-x28nB1evbMV6WN8guBdZ6pVAr_2agyzoNuSO5tkV_O-790IRmU432Omv2nHBD3QQKEqv6aHe3i_F3ioPREuWduYY3yjlg0QYyh-nrzAXyzF3wbg"
}
我将 userDefault 中保存的 access_token
替换为响应中的 access_token
。
替换 GTLServiceGmail 中的值 service.authorizer
更多信息here
我正在使用这个例子 Gmail Api
我试图找到一个合适的 api 方法来做到这一点,但没有成功。
我想到将凭据保存在 NSUserDefaults 中并手动将它们添加到 service.authorizer。
这有效,但在大约一个小时后我回答:The operation Could not be completed. (Invalid Credentials)
。
不知道有没有刷新这些凭据的功能
终于找到解决方法了
我维护 NSUserDefault 功能
curl -d "client_id=yourClientId&client_secret=yourClientSecret&refresh_token=yourRefreshToken&grant_type=refresh_token" https://www.googleapis.com/oauth2/v3/token
响应是这样的:
{
"access_token": "ya29.KALxxxxyvE5PI3-s6oBAP74uGFE8rOhho5XYfvExfU3lxHdX23HWbKlkR4YI1xxxx",
"token_type": "Bearer",
"expires_in": 3600,
"id_token": "xjc4ZDg3NWY5MDA5YzMzZjFlODljOGExMDFjM2UwNDMyNWQ2YmQ0MTEifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXRfaGFzaCI6InRJWVE0b2pBZfNyRlJXdFEiLCJhdWQiOiIyMDM3MjIwMDA2NzMtdGIwamF1OWhwamFsa21yaHFxcDkybnBxamo2ZjhkcWcuYXBwcy5nb29nbGV1c2VyY29udGVx1ODM5MTE5MDk0OTAzMjg3NjAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXpwIjoiMjAzNzIyMDAwNjczLXRiMGphdTlocGphbGttcmhxcXA5Mm5wcWpqNmY4ZHFnLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiaGQiOiJ2b3ZdwiZW1haWwiOiJqZ29uemFsZXpAdm92c29sdXRpb25zLmNvbSIsImlhdCI6MTQ0NzE2OTU5NSwiZXhwIjoxNDQ3MTczMTk1fQ.gZiYdgEPhYkQTvjgxugaMaXTIH3652_E_3h_khHgaKFA56ko3VqBF9qlzJ-1LDIoTO8G2eQWa6ncE7aEwLvxelZ8429iJUCIH-1cmeuck_LWpFIdQ9sQN8u4I7ABTRWPpZ3vL8nXMNmPGynvCDWimffYCGWeVZGs3uv0O7pFftqIKMJchVk_WyC5fm9i8m-cGPN-UcrvgZKrFEOMydvF83HQzIR-x28nB1evbMV6WN8guBdZ6pVAr_2agyzoNuSO5tkV_O-790IRmU432Omv2nHBD3QQKEqv6aHe3i_F3ioPREuWduYY3yjlg0QYyh-nrzAXyzF3wbg"
}
我将 userDefault 中保存的 access_token
替换为响应中的 access_token
。
替换 GTLServiceGmail 中的值 service.authorizer
更多信息here