<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem oauth</title>
<link>https://forum.pasja-informatyki.pl/tag/oauth</link>
<description>Powered by Question2Answer</description>
<item>
<title>Problem z autoryzacją moich żądań do Spotify API za pośrednictwem Postmana</title>
<link>https://forum.pasja-informatyki.pl/588191/problem-z-autoryzacja-moich-zadan-do-spotify-api-za-posrednictwem-postmana</link>
<description>

&lt;p&gt;Buduję serwis Spring Boot przy użyciu Spotify Web API i chciałem przetestować metody kontrolera. Za pomocą przeglądarki mogłem sprawdzić żądanie GET i wszystko działało poprawnie - otrzymałem oczekiwane odpowiedzi. Problem wystąpił, gdy chciałem sprawdzić żądania POST za pomocą Postmana. Pomimo skonfigurowania autoryzacji poprzez OAuth 2.0 w Postmanie i otrzymania tokenów dostępu, przy każdej próbie złożenia żądania zwracany był kod źródłowy strony logowania Spotify, niezależnie od tego, czy było to żądanie POST, czy GET.&lt;/p&gt;



&lt;p&gt;Tak wygląda moja konfiguracja Spotify w pliku application.properties:
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
spring.security.oauth2.client.registration.spotify.client-id=${SPOTIFY_CLIENT_ID}
spring.security.oauth2.client.registration.spotify.client-secret=${SPOTIFY_CLIENT_SECRET}
spring.security.oauth2.client.registration.spotify.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.spotify.redirect-uri=http://localhost:8080/login/oauth2/code/spotify
spring.security.oauth2.client.registration.spotify.scope=user-read-email,user-read-private
spring.security.oauth2.client.provider.spotify.authorization-uri=https://accounts.spotify.com/authorize
spring.security.oauth2.client.provider.spotify.token-uri=https://accounts.spotify.com/api/token

spring.security.oauth2.client.registration.spotify.provider=spotify
spring.security.oauth2.client.provider.spotify.user-info-uri=https://api.spotify.com/v1/me
spring.security.oauth2.client.provider.spotify.user-name-attribute=id
&lt;/pre&gt;



&lt;p&gt;Mam ten sam identyfikator&amp;nbsp;przekierowania URI ustawiony w ustawieniach aplikacji na stronie Spotify.&lt;/p&gt;



&lt;p&gt;Serwis, w której znajduje się przykładowa metoda, którą chciałem przetestować, wygląda następująco:
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
@Service
@RequiredArgsConstructor
public class SpotifyService {

    private final RestTemplate restTemplate;
    private final String BASE_URL = &quot;https://api.spotify.com/v1/&quot;;

    private final ObjectMapper objectMapper;

    public &amp;lt;T&amp;gt; T fetchData(String id, String endpoint, String accessToken, Class&amp;lt;T&amp;gt; responseType) {
        HttpHeaders headers = new HttpHeaders();
        headers.setBearerAuth(accessToken);
        HttpEntity&amp;lt;String&amp;gt; entity = new HttpEntity&amp;lt;&amp;gt;(&quot;parameters&quot;, headers);

        ResponseEntity&amp;lt;String&amp;gt; response = restTemplate.exchange(
                BASE_URL + endpoint + &quot;/&quot; + id,
                HttpMethod.GET,
                entity,
                String.class
        );

        try {
            return objectMapper.readValue(response.getBody(), responseType);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public ArtistDto getArtist(String artistId, String accessToken) {

        return fetchData(
                artistId,
                &quot;artists&quot;,
                accessToken,
                ArtistDto.class
        );
    }
}&lt;/pre&gt;



&lt;p&gt;I kontroler do tego:
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
@RestController
@RequiredArgsConstructor
@RequestMapping(&quot;/api/spotify&quot;)
public class SpotifyController {

    private final SpotifyService spotifyService;
    private final TokenService tokenService;

    @GetMapping(&quot;/artists/{id}&quot;)
    public ResponseEntity&amp;lt;ArtistDto&amp;gt; getArtist(@PathVariable String id) {
        String accessToken = tokenService.getAccessToken();
        ArtistDto artistDto = spotifyService.getArtist(id, accessToken);

        return ResponseEntity.ok(artistDto);
    }
}&lt;/pre&gt;



&lt;p&gt;mam również ten TokenService, który&amp;nbsp;zapewnia mi token dostępu:
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
@Service
@RequiredArgsConstructor
public class TokenService {
    private final OAuth2AuthorizedClientService authorizedClientService;

    public String getAccessToken() {
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        OAuth2AuthenticationToken oauthToken = (OAuth2AuthenticationToken) authentication;
        OAuth2AuthorizedClient client = authorizedClientService.loadAuthorizedClient(
                oauthToken.getAuthorizedClientRegistrationId(),
                oauthToken.getName()
        );

        return client.getAccessToken().getTokenValue();
    }
}&lt;/pre&gt;



&lt;p&gt;Tak jak mówiłem, gdy sprawdzam działanie tej metody w przeglądarce, zwraca mi poprawne dane w formacie JSON, natomiast gdy robię to w Postmanie, otrzymuję kod źródłowy strony logowania Spotify.&lt;/p&gt;



&lt;p&gt;Tak wygląda moja konfiguracja OAuth 2.0 w Postman:&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=11180800605300748734&quot; style=&quot;height:429px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Nie używam zakresów, ponieważ chcę dostać się do danych publicznych. Próbowałem także zmienić Typ przyznania na Client Credentials, ale wynik jest taki sam - token jest wygenerowany poprawnie i zawarty w nagłówkach, ale odpowiedzią nadal jest strona logowania.&lt;/p&gt;



&lt;p&gt;Próbowałem także utworzyć endpoint, który zwraca bieżący token dostępu za pośrednictwem przeglądarki i wklejać ten token do Postmana przy użyciu autoryzacji Bearer Token, ale nadal bezskutecznie.&lt;/p&gt;



&lt;p&gt;Naprawdę mam nadzieję, że ktoś pomoże mi rozwiązać ten problem.&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/588191/problem-z-autoryzacja-moich-zadan-do-spotify-api-za-posrednictwem-postmana</guid>
<pubDate>Fri, 22 Sep 2023 16:38:38 +0000</pubDate>
</item>
<item>
<title>Spotify API - Jak uzyskać klucz OAuth Token?</title>
<link>https://forum.pasja-informatyki.pl/581875/spotify-api-jak-uzyskac-klucz-oauth-token</link>
<description>

&lt;p&gt;Witam. Chciałem zrobić prostą aplikację do wyświetlania moich utworów z ulubionych w spotify. Konkretnie chodzi mi o to że jak wejdę &lt;a href=&quot;https://developer.spotify.com/console/get-current-user-saved-tracks/&quot; rel=&quot;nofollow&quot;&gt;TUTAJ&lt;/a&gt;&amp;nbsp;to mogę sobie taki request wykonać. Tylko jak mam uzyskać ten oauth token? Jak wpisuję w google to wszystko mnie prowadzi do tworzenia jakiejś aplikacji na portalu spotify, logowanie się w niej, itd. jakby to miała być publicznie dostępna aplikacja, a nie o to mi chodzi. Z tego będę korzystał tylko ja i jedyne co potrzebuję t o ten klucz wyciągnąć. A nie mogę go ot tak przekopiować, bo on wygasa po 1 godzinie...&lt;/p&gt;</description>
<category>Inne języki</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/581875/spotify-api-jak-uzyskac-klucz-oauth-token</guid>
<pubDate>Fri, 10 Mar 2023 22:42:50 +0000</pubDate>
</item>
<item>
<title>Garmin wellness-api - Invalid OAuth signature - PHP</title>
<link>https://forum.pasja-informatyki.pl/531879/garmin-wellness-api-invalid-oauth-signature-php</link>
<description>

&lt;p&gt;Witam,&lt;/p&gt;



&lt;p&gt;mam problem z wygenerowaniem oauth_signature dla Garmin Wellness API.&lt;/p&gt;



&lt;pre class=&quot;brush:php;&quot;&gt;
    $oauth_nonce = 'OhJBVADBAC8';
    $oauth_timestamp = '1614947339';
    $date_from = 1607089161;
    $date_to = 1614865161;

    $url = 'https://apis.garmin.com/wellness-api/rest/backfill/activities?summaryStartTimeInSeconds=' . $date_from . '&amp;amp;summaryEndTimeInSeconds=' . $date_to;

    $base_string = 'GET&amp;amp;' . rawurlencode($url) . '&amp;amp;' . rawurlencode('oauth_consumer_key=' . $oauth_consumer_key . '&amp;amp;oauth_nonce=' . $oauth_nonce . '&amp;amp;oauth_signature_method=' . $oauth_signature_method . '&amp;amp;oauth_timestamp=' . $oauth_timestamp . '&amp;amp;oauth_token=' . $oauth_token . '&amp;amp;oauth_version=' . $oauth_version . '&amp;amp;summaryStartTimeInSeconds=' . $date_from . '&amp;amp;summaryEndTimeInSeconds=' . $date_to);

    $oauth_signature = hash_hmac(&quot;SHA1&quot;, $base_string, $oauth_consumer_secret, false);
    $oauth_signature = rawurlencode(base64_encode(pack('H*', $oauth_signature)));

    $curl = curl_init();

    curl_setopt_array($curl, array(
        CURLOPT_URL =&amp;gt; $url,
        CURLOPT_RETURNTRANSFER =&amp;gt; true,
        CURLOPT_ENCODING =&amp;gt; '',
        CURLOPT_MAXREDIRS =&amp;gt; 10,
        CURLOPT_TIMEOUT =&amp;gt; 0,
        CURLOPT_FOLLOWLOCATION =&amp;gt; true,
        CURLOPT_HTTP_VERSION =&amp;gt; CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST =&amp;gt; 'GET',
        CURLOPT_HTTPHEADER =&amp;gt; array(
            'Authorization: OAuth oauth_consumer_key=&quot;' . $oauth_consumer_key . '&quot;,oauth_token=&quot;' . $oauth_token . '&quot;,oauth_signature_method=&quot;' . $oauth_signature_method . '&quot;,oauth_timestamp=&quot;' . $oauth_timestamp . '&quot;,oauth_nonce=&quot;' . $oauth_nonce . '&quot;,oauth_version=&quot;' . $oauth_version . '&quot;,oauth_signature=&quot;' . $oauth_signature . '&quot;'
        ),
    ));

    $response = curl_exec($curl);
    var_dump($response);
    curl_close($curl);&lt;/pre&gt;



&lt;p&gt;API zwraca 'Invalid OAuth signature'.
&lt;br&gt;
Symulowałem sobie to połączenie w Postmanie i było OK.
&lt;br&gt;
Jak podstawiłem sobie sigranure z postmana - też było ok, więc problem na pewno leży w samym generowaniu siganture.&lt;/p&gt;



&lt;p&gt;Możecie mi wskazać gdzie robię błąd ?&lt;/p&gt;</description>
<category>PHP</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/531879/garmin-wellness-api-invalid-oauth-signature-php</guid>
<pubDate>Fri, 05 Mar 2021 13:28:49 +0000</pubDate>
</item>
<item>
<title>Rejestracja i Logowanie przez Oauth2 Linkedin</title>
<link>https://forum.pasja-informatyki.pl/511499/rejestracja-i-logowanie-przez-oauth2-linkedin</link>
<description>

&lt;p&gt;Witam.&lt;/p&gt;



&lt;p&gt;Chciałem zrobić możliwość logowania i rejestracji poprzez Oauth2 Linkedin ale utknąłem na etapie wyświetlenia przycisku &quot;Zaloguj przez Linkedin&quot; :D. Cały czas mam błąd o treści:&lt;/p&gt;



&lt;p&gt;&lt;span style=&quot;color:#ff0000&quot;&gt;Uncaught (in promise) Error: [IN:Parser] Could not instantiate tag for 'login': t.user is null&lt;/span&gt;&lt;/p&gt;



&lt;p&gt;Wykonałem następujące czynności:&lt;/p&gt;



&lt;p&gt;W treści strony gdzie chcę mieć widoczny przycisk wklejam:&lt;/p&gt;



&lt;pre class=&quot;brush:jscript;&quot;&gt;
&amp;lt;script type=&quot;IN/Login&quot; data-url=&quot;http://developer.linkedin.com/&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;



&lt;p&gt;Na początku strony (próbowałem też na końcu body) dodaje skrypt:&lt;/p&gt;



&lt;pre class=&quot;brush:jscript;&quot;&gt;
 &amp;lt;script type=&quot;text/javascript&quot; src=&quot;//platform.linkedin.com/in.js&quot;&amp;gt;
        api_key: API_KEY
        authorize: true
        onLoad: onLinkedInLoad
        scope: r_basicprofile r_emailaddress
    &amp;lt;/script&amp;gt;&lt;/pre&gt;



&lt;p&gt;Po aładowaniu strony dostaje powyższy błąd.&lt;/p&gt;



&lt;p&gt;Ale wyświetlenie przycisku &quot;share&quot; działą bez zarzutu więc co jest nie tak z tym &lt;strong&gt;login&lt;/strong&gt;.&lt;/p&gt;



&lt;p&gt;Dziękuję.&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>JavaScript</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/511499/rejestracja-i-logowanie-przez-oauth2-linkedin</guid>
<pubDate>Tue, 13 Oct 2020 03:42:22 +0000</pubDate>
</item>
<item>
<title>JWT w Spring Boot trudnosci w implementacji</title>
<link>https://forum.pasja-informatyki.pl/462541/jwt-w-spring-boot-trudnosci-w-implementacji</link>
<description>

&lt;p&gt;Cześć mam trudnośći w implementacji JWT. Stworzyłem filtr:&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
public class AuthenticationFilter extends UsernamePasswordAuthenticationFilter
{
private final AuthenticationManager authenticationManager;

public AuthenticationFilter(AuthenticationManager authenticationManager) 
{	
	this.authenticationManager = authenticationManager;
}

@Override
    public Authentication attemptAuthentication(HttpServletRequest request,
			HttpServletResponse response) throws AuthenticationException {

	try {
		UserLoginRequestModel creds = new ObjectMapper().readValue(request.getInputStream(),UserLoginRequestModel.class);

		UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(
				creds.getEmail(),
				creds.getPassword(),
				new ArrayList&amp;lt;&amp;gt;());

		authenticationManager.authenticate(usernamePasswordAuthenticationToken);

		return authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(
				creds.getEmail(),
				creds.getPassword(),
				new ArrayList&amp;lt;&amp;gt;()));
	}
catch(IOException e)
	{
	throw new RuntimeException(e);
	}
    
    }


@Override
protected void successfulAuthentication(HttpServletRequest request,
        HttpServletResponse res,FilterChain chain, Authentication auth) throws IOException, ServletException
{
	String userName = ((User)auth.getPrincipal()).getUsername();
	
	String token = Jwts.builder()
			.setSubject(userName)
			//.claim(&quot;scope&quot;,&quot;ADMIN&quot;)
			.setExpiration(new Date(System.currentTimeMillis() + SecurityConstants.EXPIRATION_TIME))
			.signWith(SignatureAlgorithm.HS512, SecurityConstants.getTokenSecret())
			.compact();
	
	UserService userService = (UserService) SpringApplicationContext.getBean(&quot;userServiceImpl&quot;);
	UserDto userDto = userService.getUser(userName);
	
	res.addHeader(SecurityConstants.HEADER_STRING,SecurityConstants.TOKEN_PREFIX+token);
	
	res.addHeader(&quot;UserID&quot;,userDto.getUserId());
	
}
}
&lt;/pre&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
public class AuthorizationFilter extends BasicAuthenticationFilter 
{

	public AuthorizationFilter(AuthenticationManager authManager)
	{
		super(authManager);
	}
	
	
	
	@Override
	protected void doFilterInternal(HttpServletRequest req,
	        HttpServletResponse res,FilterChain chain) throws IOException, ServletException
	{
		String header = req.getHeader(SecurityConstants.HEADER_STRING);
		
	if(header== null || !header.startsWith(SecurityConstants.TOKEN_PREFIX))
			{
		chain.doFilter(req, res);
			return;
			}
		
		UsernamePasswordAuthenticationToken authentication = getAuthentication(req);
		SecurityContextHolder.getContext().setAuthentication(authentication);
		chain.doFilter(req, res);
	
	}



	private UsernamePasswordAuthenticationToken getAuthentication(HttpServletRequest req)
	{
	String token = req.getHeader(SecurityConstants.HEADER_STRING);
	
	if(token != null)
	{
		token = token.replace(SecurityConstants.TOKEN_PREFIX,&quot;&quot;);
	
	String user = Jwts.parser()
			.setSigningKey(SecurityConstants.getTokenSecret())
			.parseClaimsJws(token)
			.getBody()
			.getSubject();
			
	if(user != null)
	{
		List&amp;lt;SimpleGrantedAuthority&amp;gt; authorities = new ArrayList&amp;lt;&amp;gt;();
		authorities.add(new SimpleGrantedAuthority(&quot;ADMIN&quot;));
		return new UsernamePasswordAuthenticationToken(user, null,authorities );
	}
	
	}
		return null;
	}
	
}
&lt;/pre&gt;



&lt;p&gt;Oraz config:&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;

@EnableWebSecurity
public class WebSecurity extends WebSecurityConfigurerAdapter {
    private final UserService userDetailsService;
    private final BCryptPasswordEncoder bCryptPasswordEncoder;

    public WebSecurity(UserService userDetailsService, BCryptPasswordEncoder bCryptPasswordEncoder) {
        super();
        this.userDetailsService = userDetailsService;
        this.bCryptPasswordEncoder = bCryptPasswordEncoder;
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder);
    }


    @Override
    protected void configure(HttpSecurity http) throws Exception {
		http.csrf().disable().authorizeRequests().antMatchers(HttpMethod.POST, SecurityConstants.SIGN_UP_URL)
				.permitAll()
				//.antMatchers(HttpMethod.GET,&quot;/users/showUser/**&quot;).hasRole(&quot;ADMIN&quot;)
				.anyRequest()
				.authenticated()
				.and()
				.addFilter(getAuthenticationFilter())
				.addFilter(new AuthorizationFilter(authenticationManager()))
				.sessionManagement()
				.sessionCreationPolicy(SessionCreationPolicy.STATELESS);


	}

    public AuthenticationFilter getAuthenticationFilter() throws Exception {
        final AuthenticationFilter filter = new AuthenticationFilter(authenticationManager());
        filter.setFilterProcessesUrl(&quot;/users/login&quot;);
        return filter;
    }

}&lt;/pre&gt;



&lt;p&gt;Rola jest wpisana hardcodem ale tylko na potrzebę testów. Problem polega na tym że nie do końca wiem czy rola jest zapisywana w tokenie. Gdy chcę ograniczać dostęp w oparciu o rolę dostaję brak dostępu. Może ktoś rzuci okiem i coś podpowie.&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/462541/jwt-w-spring-boot-trudnosci-w-implementacji</guid>
<pubDate>Thu, 12 Dec 2019 15:25:08 +0000</pubDate>
</item>
<item>
<title>php - jak stworzyć api?</title>
<link>https://forum.pasja-informatyki.pl/433741/php-jak-stworzyc-api</link>
<description>

&lt;p&gt;Cześć, mam aplikacje która powiedzmy, że posiada logowanie i rejestracje, po zajerestrowaniu uzytkownik ma jakies tam dane i tyle. No i potrzebuje aby móc się tymi danymi podzielić też z aplikacją mobilną. Jak to zrobić? Czytałem o tworzeniu czegoś w rodzaju API. ale nigdzie nie widziałem praktycznego przykładu który by mi to rozjaśnił. Dostałem też informacje, żeby użyć tokenów z &lt;strong&gt;OAuth 2.0&lt;/strong&gt;, czy faktycznie OAuth jest dobrym rozwiązaniem?&lt;/p&gt;</description>
<category>PHP</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/433741/php-jak-stworzyc-api</guid>
<pubDate>Wed, 05 Jun 2019 18:21:41 +0000</pubDate>
</item>
<item>
<title>[Intermediate] Issue in binding social accounts with local account in web app</title>
<link>https://forum.pasja-informatyki.pl/342713/intermediate-issue-in-binding-social-accounts-with-local-account-in-web-app</link>
<description>

&lt;p&gt;Opis aplikacji:
&lt;br&gt;
W apce możliwe jest zarejestrowanie się poprzez dane użytkownika (email/nick i hasło), wówczas wysyłany jest email z linkiem do weryfikacji, który przekierowuje do ścieżki odpowiedzialnej za weryfikacje użytkownika (za pomocą JWT). Po tym użytkownik się loguje, dostaje od serwera auth token i refresh token, ten pierwszy przechowywany w session storage, drugi w local storage. Ustawiony jest axios interceptor który w przypadku kodu 401 przesyła do serwera refresh token a ten zwraca nowy auth token i refresh token i są one ustawione domyślnie do każdego zapytania http za pomocą axios. Po stronie serwera mam middleware który weryfikuje auth token i w razie potrzeby zwraca 401. Oprócz tego możliwe jest logowanie poprzez social media (fb, google+, github), zaimplementowane przy użyciu passport.&lt;/p&gt;



&lt;p&gt;Opis zadania:
&lt;br&gt;
Zalogowany użytkownik ma mieć możliwość połączenia konta z social, taki case jest opisany w dokumentacji passport:&amp;nbsp;&lt;a href=&quot;http://www.passportjs.org/docs/authorize/&quot; rel=&quot;nofollow&quot;&gt;http://www.passportjs.org/docs/authorize/&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Opis problemu:
&lt;br&gt;
Zapytania pod route podany w dokumentacji:&lt;/p&gt;



&lt;pre class=&quot;brush:jscript;&quot;&gt;
app.get('/connect/twitter',
  passport.authorize('twitter-authz', { failureRedirect: '/account' })
);&lt;/pre&gt;



&lt;p&gt;mogą być wykonywane tylko poprzez przekierowanie za pomocą&amp;nbsp;&amp;lt;a href='/connect/google'&amp;gt;, odwołanie się do nich za pomocą API nie są możliwe (CORS). I tu pojawia się problem ponieważ nie ma możliwości przekazania auth token do serwera, a co za tym idzie serwer nie może odczytać danych lokalnie zalogowanego użytkownika i dodać do bazy danych użytkownika uaktualnione dane (w postaci danych pobranych z konta google).&lt;/p&gt;



&lt;p&gt;Przepraszam za długi opis lecz chciałem dokładnie opisać problem. Z góry dziękuję za pomoc.
&lt;br&gt;
Kod źródłowy:&amp;nbsp;&lt;a href=&quot;https://github.com/frozenfroggie/Nightlife&quot; rel=&quot;nofollow&quot;&gt;https://github.com/frozenfroggie/Nightlife&lt;/a&gt;
&lt;br&gt;
Adres www:&amp;nbsp;&lt;a href=&quot;https://vast-everglades-58513.herokuapp.com/&quot; rel=&quot;nofollow&quot;&gt;https://vast-everglades-58513.herokuapp.com&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;PS. Proszę wybaczyć za beznadziejne nazwy ostatnich commitów ale trochę jestem zdesperowany xD&lt;/p&gt;</description>
<category>JavaScript</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/342713/intermediate-issue-in-binding-social-accounts-with-local-account-in-web-app</guid>
<pubDate>Thu, 12 Apr 2018 13:49:46 +0000</pubDate>
</item>
<item>
<title>Oauth2 Meteor na Wekanie</title>
<link>https://forum.pasja-informatyki.pl/267591/oauth2-meteor-na-wekanie</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
muszę podpiąć autoryzację Oauth2 do Wekan'a, nie wiem jak to za bardzo zrobić, odpaliłem wekana lokalnie (działa), ale nie wiem jak zabrać się za zmianę tej autentykacji :/ Znalazłem na githubie taki link:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/mulesoft/js-client-oauth2&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://github.com/mulesoft/js-client-oauth2&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Wekan jest projektem na meteorze więc także szukałem w atmosphere i znalazłem ale nie wiem jak i gdzie go zaimplementować :/&lt;br /&gt;
&lt;br /&gt;
Jak może wiecie gdzie znaleźć w wekanie pliki configuracyjne do autoryzacji to byłbym bardzo wdzięczy za ich napisanie i podanie linii :)&lt;br /&gt;
&lt;br /&gt;
Dzięki za wszystkie odpowiedzi!</description>
<category>JavaScript</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/267591/oauth2-meteor-na-wekanie</guid>
<pubDate>Thu, 06 Jul 2017 20:24:28 +0000</pubDate>
</item>
</channel>
</rss>