protected override Dictionary <string, string> BuildGetUserInfoParams(DefaultAccessTokenModel accessTokenModel) { var dict = base.BuildGetUserInfoParams(accessTokenModel); dict["getNickName"] = "1"; return(dict); }
protected override Dictionary <string, string> BuildGetUserInfoParams(DefaultAccessTokenModel accessTokenModel) { return(new Dictionary <string, string> { ["clientId"] = oauthConfig.AppId, ["token"] = accessTokenModel.AccessToken, }); }
protected override Dictionary <string, string> BuildGetUserInfoParams(DefaultAccessTokenModel accessTokenModel) { return(new Dictionary <string, string>() { ["key"] = ApiKey, ["access_token"] = accessTokenModel.AccessToken, ["site"] = "stackoverflow" }); }
protected override Dictionary <string, string> BuildGetUserInfoParams(DefaultAccessTokenModel accessTokenModel) { return(new Dictionary <string, string> { ["access_token"] = accessTokenModel.AccessToken, ["app_id"] = (oauthConfig.AppId ?? ""), ["secret"] = (oauthConfig.AppKey ?? ""), }); }
protected override Dictionary <string, string> BuildGetUserInfoParams(DefaultAccessTokenModel accessTokenModel) { var openId = GetOpenId(accessTokenModel.AccessToken).ConfigureAwait(false).GetAwaiter().GetResult(); return(new Dictionary <string, string>() { ["access_token"] = accessTokenModel.AccessToken, ["oauth_consumer_key"] = oauthConfig.AppId, ["openid"] = openId, }); }
protected override Dictionary <string, string> BuildGetUserInfoParams(DefaultAccessTokenModel accessTokenModel) { var timestamp = DingTalkSignTool.GetTimestamp(); var sign = DingTalkSignTool.Sign(timestamp, oauthConfig.AppKey); return(new Dictionary <string, string> { ["accessKey"] = oauthConfig.AppId, ["timestamp"] = timestamp, ["signature"] = sign }); }
public override async Task <StackOverflowUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.GetAsync <StackOverflowApiResponse <StackOverflowUserInfoModel> >( UserInfoUrl, BuildGetUserInfoParams(accessTokenModel) ); if (!string.IsNullOrEmpty(userInfoModel.ErrorMessage)) { throw new Exception(userInfoModel.ErrorMessage); } return(userInfoModel.Items?.First()); }
public override async Task <MiUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.GetAsync <MiApiResponse <MiUserInfoModel> >( UserInfoUrl, BuildGetUserInfoParams(accessTokenModel) ); if (userInfoModel.HasError()) { throw new Exception(userInfoModel.Description); } return(userInfoModel.Data); }
/// <summary> /// 美团获取用户信息接口,用的是 HTTP POST 方式 /// </summary> /// <param name="accessTokenModel"></param> /// <returns></returns> public override async Task <MeiTuanUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.PostAsync <MeiTuanUserInfoModel>( UserInfoUrl, BuildGetUserInfoParams(accessTokenModel) ); if (userInfoModel.HasError()) { throw new Exception(userInfoModel.ErrorMessage); } return(userInfoModel); }
private async Task <string> GetLinkedInAvatarUrl(DefaultAccessTokenModel accessTokenModel) { var pictureInfo = await HttpRequestApi.GetAsync <LinkedInPictureInfoModelResponse>( UserPictureInfoUrl, null, new Dictionary <string, string> { ["Authorization"] = "Bearer " + accessTokenModel.AccessToken } ); return(pictureInfo?.ProfilePicture?.DisplayImage?.Elements?.FirstOrDefault()?.Identifiers?.FirstOrDefault()?.Identifier); }
public override async Task <XunLeiUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.GetAsync <XunLeiUserInfoModel>( UserInfoUrl, null, new Dictionary <string, string>() { { "authorization", $"Bearer {accessTokenModel.AccessToken}" } } ); if (userInfoModel.HasError()) { throw new Exception(userInfoModel.ErrorMessage); } return(userInfoModel); }
public override async Task <FacebookUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.GetAsync <FacebookUserInfoModel>( UserInfoUrl, new Dictionary <string, string>() { ["access_token"] = accessTokenModel.AccessToken, ["fields"] = string.IsNullOrEmpty(accessTokenModel.Scope) ? "id,name,email,picture" : accessTokenModel.Scope } ); if (userInfoModel.HasError()) { throw new Exception(userInfoModel.ErrorMessage); } return(userInfoModel); }
public override async Task <GithubUserModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.GetAsync <GithubUserModel>( UserInfoUrl, BuildGetUserInfoParams(accessTokenModel), new Dictionary <string, string>() { ["Authorization"] = $"token {accessTokenModel.AccessToken}" } ); if (userInfoModel.HasError()) { throw new Exception(userInfoModel.ErrorMessage); } return(userInfoModel); }
public override async Task <MicrosoftUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.GetAsync <MicrosoftUserInfoModel>( UserInfoUrl, null, new Dictionary <string, string> { ["Authorization"] = "Bearer " + accessTokenModel.AccessToken } ); if (userInfoModel.Error != null) { throw new Exception(userInfoModel.Error.Message); } userInfoModel.Name = userInfoModel.Name?.Replace(" ", ""); return(userInfoModel); }
public override async Task <DingTalkUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { //https://ding-doc.dingtalk.com/document/app/obtain-the-user-information-based-on-the-sns-temporary-authorization#topic-1995619 var queryString = ToQueryString(BuildGetUserInfoParams(accessTokenModel)); var api = $"{UserInfoUrl}?{queryString}"; var responseText = await HttpRequestApi.PostJsonBodyAsync(api, new Dictionary <string, string> { //这里的 accessTokenModel.AccessToken 实质是回调页面 code,钉钉应用内登录不支持 access token ["tmp_auth_code"] = accessTokenModel.AccessToken }); var userInfoApiResponse = JsonSerializer.Deserialize <DingTalkGetUserInfoApiResponse>(responseText); if (userInfoApiResponse.HasError()) { throw new Exception(userInfoApiResponse.ErrorMessage); } return(userInfoApiResponse.UserInfo); }
public override async Task <LinkedInUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModelApiResponse = await HttpRequestApi.GetAsync <LinkedInUserInfoModelResponse>( UserInfoUrl, null, new Dictionary <string, string> { ["Authorization"] = "Bearer " + accessTokenModel.AccessToken } ); if (userInfoModelApiResponse.ErrorMessage != null) { throw new Exception(userInfoModelApiResponse.ErrorMessage); } var avatarUrl = await GetLinkedInAvatarUrl(accessTokenModel); var userInfoModel = new LinkedInUserInfoModel(userInfoModelApiResponse) { Avatar = avatarUrl }; return(userInfoModel); }