invisnik / laravel-steam-auth Goto Github PK
View Code? Open in Web Editor NEWLaravel Steam Auth
License: MIT License
Laravel Steam Auth
License: MIT License
Hello,
I am trying to build a site for my server altis life
I use your library with Laravel 5.2
I noticed a bug with the addition of a new user
when a new user is recorded via the Steam user was recording well in DB but redirect flaunted the middleware error auth
In the I just removed the $ user of User :: create
and I redo a request for a $ retrieved information with a new DB queries
public function login(){
if ($this->steam->validate()) {
$info = $this->steam->getUserInfo();
if (!is_null($info)) {
$user = User::where('steamid', $info->getSteamID64())->first();
if (!is_null($user)) {
Auth::login($user, true);
$user->lastlogin = new \DateTime('',new \DateTimeZone('Europe/Paris'));
$user->save();
return redirect(route('profil'));
}else{
User::create([
'username' => $info->getNick(),
'avatar' => $info->getProfilePictureFull(),
'steamid' => $info->getSteamID64(),
'lastlogin' => new \DateTime('',new \DateTimeZone('Europe/Paris'))
]);
$user = User::where('steamid', $info->getSteamID64())->first();
Auth::login($user, true);
return redirect(route('profil'));
}
}
} else {
return $this->steam->redirect(); // redirect to Steam login page
}
}
I can make a pull request if it suits you
Sorry I do not speak much English
Sincerely yours,
Arnaud C
preg_match("#^http%3A%2F%2Fsteamcommunity.com%2Fopenid%2Fid%2F([0-9]{17,25})#", $this->request->get('openid_claimed_id'), $matches); // - Working
//Not working - preg_match("#^http://steamcommunity.com/openid/id/([0-9]{17,25})#", $this->request->get('openid_claimed_id'), $matches);
And
$this->steam->validate() // - Always returns false and i just don't know wat i can do with this problem
Perhaps such a problem is just me? Can you suggest what might be wrong?
Having some issues with the plugin on PHP 7 and protected scopes. Using your example with some modifications, but those are not causing the issues.
Locally, development works perfect, on deployment to production it is no longer working, failing with the below
FatalThrowableError in SteamAuthController.php line 56:
Cannot access protected property Invisnik\LaravelSteamAuth\SteamInfo::$steamID64
`<?php namespace App\Http\Controllers\Auth;
//use App\Http\Requests\Request;
use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Support\Facades\Auth;
use Request;
use Invisnik\LaravelSteamAuth\SteamAuth;
class SteamAuthController extends Controller
{
/**
* @var SteamAuth
*/
private $steam;
public function __construct(SteamAuth $steam)
{
$this->steam = $steam;
}
public function login()
{
if ($this->steam->validate()) {
$info = $this->steam->getUserInfo();
if (!is_null($info)) {
$user = $this->findOrNewUser($info);
$user->ip_address = Request::getClientIp();
$user->save();
Auth::login($user, true);
return self::redirectvalid();
} else {
return $this->steam->redirect(); // redirect to Steam login page
}
}
else {
return $this->steam->redirect(); // redirect to Steam login page
}
}
protected function findOrNewUser($info)
{
$user = User::where('steamid', $info->steamID64)->first();
if (!is_null($user)) {
return $user;
}
$user = User::create([
'name' => $info->personaname,
'avatar' => $info->avatarfull,
'steamid' => $info->steamID64
]);
$user->setAvatar(file_get_contents($info->avatarfull));
return $user;
}
public function redirect() {
$playerUID = User::where('uid', '=', Auth::user()->uid)->first();
return redirect('/player/'. $playerUID->uid); // redirect to site
}
public function redirectvalid() {
$playerUID = User::where('uid', '=', Auth::user()->uid)->first();
return redirect('/player/'. $playerUID->uid); // redirect to site
}
}`
Any ideas what is causing this?
My current issue is when a user logs back into the application from logging out I need it to check if the users steam nickname has changed if so it will update it in mysql database. Hopefully there's a way to fix this and or add this to the package itself. Thank you!
The steam API request on line 157 is returning 403 error causing a login loop..
I narrowed the issue down the \Config::get('steam-auth.api_key') is not getting the api-key or putting it in the request URL. Replacing this with the API resolves the issue.
Is there a tutorial how. All the others do not work.
I woudl appreciate any and all documentation when I try this it just redirects back to steam login every time
Hello, I think that you should fix this small issue.
Type error: Argument 1 passed to Invisnik\LaravelSteamAuth\SteamAuth::__construct() must be an instance of Illuminate\Http\Request
You have created constructor for SteamAuth:
public function __construct(Request $request)
{
...
}
but when you register()
it in SteamServiceProvider
you don't pass Request $request
to it:
public function register()
{
$this->app['steamauth'] = $this->app->share(
function () {
return new SteamAuth();
}
);
}
In this case when I trying to generate PHPDoc via barryvdh/laravel-ide-helper it throws this exception.
Hey guys,
I am really confused by this one. Having used this library on a couple projects and I never ran into such a problem. This is possibly a mistake on my side after not having used Laravel in a while now.
I'm using Laravel 5.4 and PHP 7.1.4.
When clicking on the "Login through Steam" button it will redirect me to Steam as usual. After submitting my credentials over at Steam I get redirected back to my site.
Now the URL will look like this: https://steam.local/login?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=id_res&openid.op_endpoint=https%3A%2F%2Fsteamcommunity.com%2Fopenid%2Flogin&openid.claimed_id=http%3A%2F%2Fsteamcommunity.com%2Fopenid%2Fid%2F.......................................................................................................................................
No User has been created and obviously I have not been logged in. I simply can't figure out the problem and i need your help guys.
web.php (Routes)
Route::get('/', function() { return redirect(Auth::check() ? '/home' : '/steamlogin'); });
Route::get('login', function() { return Auth::check() ? redirect('/home') : view('steamlogin'); })->name('steamlogin');
Route::get('login-through-steam', 'AuthController@steamlogin')->name('loginThroughSteam');
Route::group(['middleware' => 'auth.steam'], function () {
Route::get('home', function() { return view('home'); })->name('home');
});
AuthController->steamlogin()
public function steamlogin()
{
if ($this->steam->validate()) {
$info = $this->steam->getUserInfo();
if (!is_null($info)) {
$user = User::where('steamid', '=', $info->steamID64)->first();
$new = is_null($user) ? true : false;
if (is_null($user)) {
$user = User::create([
'steamid' => $info->steamID64,
'steam_avatar' => $info->avatarfull,
'steam_name' => $info->personaname
]);
}
else {
$user->update([
'steam_avatar' => $info->avatarfull,
'steam_name' => $info->personaname,
]);
}
Auth::login($user, true);
return redirect('/');
}
}
return $this->steam->redirect(); // redirect to Steam login page
}
Steam.Auth (Middleware)
public function handle($request, Closure $next)
{
if (Auth::guest()) {
return redirect('/login');
}
return $next($request);
}
php artisan route:list
+--------+----------+------------------------------+----------------------+---------------------------------------------------------------+------------------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+------------------------------+----------------------+---------------------------------------------------------------+------------------------+
| | GET|HEAD | / | | Closure | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | home | home | Closure | web,auth.steam |
| | GET|HEAD | login-through-steam | loginThroughSteam | App\Http\Controllers\AuthController@steamlogin | web |
| | POST | logout | logout | Closure | web,auth.steam |
| | GET|HEAD | steamlogin | steamlogin | Closure | web |
+--------+----------+------------------------------+----------------------+---------------------------------------------------------------+------------------------+
Hello,I don't know why the login is successful but get user info is empty.
private $steam;
public function __construct(SteamAuth $steam)
{
$this->steam = $steam;
}
public function login()
{
if ($this->steam->validate()) {
$info = $this->steam->getUserInfo();
if (!is_null($info)) {
$user = User::where('steamid', $info->getSteamID64())->first();
if (is_null($user)) {
$user = User::create([
'username' => $info->getNick(),
'avatar' => $info->getProfilePictureFull(),
'steamid' => $info->getSteamID64()
]);
Log::info("steamid:".$this->steam->getSteamId());
Log::info("parseInfo:".$this->steam->parseInfo());
Log::info("getUserInfo:".json_encode($this->steam->getUserInfo()));
Log::info("getAuthUrl:".$this->steam->getAuthUrl());
}
Auth::login($user, true);
return redirect('/'); // redirect to site
}
}
return $this->steam->redirect(); // redirect to Steam login page
}
the log output:
[2016-08-04 22:38:15] local.INFO: steamid:76561198095715299
[2016-08-04 22:38:15] local.INFO: parseInfo:
[2016-08-04 22:38:15] local.INFO: getUserInfo:{}
[2016-08-04 22:38:15] local.INFO: getAuthUrl:
Is no API key needed? Also can other steamuser information be accessed with with plugin?
I use Laravel 5.4 on my project. But cant login and didnt create new users on database.
My Routes:
Route::get('/', function () {
return view('welcome');
});
Route::get('login', 'AuthController@login')->name('login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');
My User.php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'avatar', 'steamid', 'username',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
My AuthController:
namespace App\Http\Controllers;
use Invisnik\LaravelSteamAuth\SteamAuth;
use App\User;
use Auth;
class AuthController extends Controller
{
/**
* @var SteamAuth
*/
private $steam;
public function __construct(SteamAuth $steam)
{
$this->steam = $steam;
}
public function login()
{
if ($this->steam->validate()) {
$info = $this->steam->getUserInfo();
if (!is_null($info)) {
$user = User::where('steamid', $info->steamID64)->first();
if (is_null($user)) {
$user = User::create([
'username' => $info->personaname,
'avatar' => $info->avatarfull,
'steamid' => $info->steamID64
]);
}
Auth::login($user, true);
return redirect('/'); // redirect to site
}
}
return $this->steam->redirect(); // redirect to Steam login page
}
}
Could you move config/steam-auth.php info in config/services.php like OAuth package https://github.com/laravel/socialite ?
В PHP 5.5 есть некое ограничение при использовании 'empty()' - в качестве аргумента нельзя использовать другой метод.
Поэтому " !empty($this->request->server('HTTPS')) " (SteamAuth.php:119) будет выдавать ошибку. Вынеси аргумент в отдельную переменную и подставляй ее.
The library works on Laravel 5.3?
Hello, how does the redirect_url in the config works?
I've put the route to the main page and it doesn't use it, just redirects to the controller.
Thank you.
After login through steam redirect back isn't clear.
in config it set to:
'redirect_url' => '/',
but nothing happen, i get back with ugly url like
http://localhost:8000/?openid.ns=http%3A%2F%2Fspecs.openid.net%2...
this one working in 5.1 ?
If the site is https, then the openid.realm must reflect that. Otherwise the login fails. There is the start of code to correct this, but it is not correct.
Add to config file:
'https' => true,
However, that still did not fix it.
In SteamAuth.php line ~131 change the following...
'openid.realm' => \Config::get('steam-auth.https') ? 'https' : 'http' . '://' . $this->request->server('HTTP_HOST'),
...to this...
'openid.realm' => \Config::get('steam-auth.https') ? 'https' . '://' . $this->request->server('HTTP_HOST') : 'http' . '://' . $this->request->server('HTTP_HOST'),
Hello! Thanks for the previous fix!
If the redirect_url is set to '/' it returns a messy url after login. If it's set to any other, it returns clean.
@invisnik As the title say, everything is in place, after signin in in steam page, I pass on the else case as if the login's fail.
I'm working with a local project and a clone of the project on my web server. The two are identical with the exception of the .env
file and such. This package works flawlessly on my local project, but seems to run into issues on the remote project.
'redirect_url' => '/login',
Route::get('login', 'AuthController@login');
The AuthController's login function is pretty much identical to the example on the git in terms of core functionality.
public function login()
{
if ($this->steam->validate()) {
$info = $this->steam->getUserInfo();
if (!is_null($info)) {
$user = User::where('steam_id', $info->getSteamID64())->first();
if (is_null($user)) {
$user = User::create([
'steam_id' => $info->getSteamID64(),
'username' => $info->getNick(),
'avatar' => $info->getProfilePictureFull(),
]);
$user->ip_address = Request::ip();
$user->save();
} else {
$user->ip_address = Request::ip();
$user->update([
'username' => $info->getNick(),
'avatar' => $info->getProfilePictureFull(),
]);
}
Auth::login($user, true);
return redirect('/panel'); // redirect to site
}
}
return $this->steam->redirect(); // redirect to Steam login page
}
Now the problem arises when I try signing in with the remote project on my web server. By visiting mysite.com/login
I get redirected to Steam as normal, but when I sign in, I just get redirected to the same Steam login page. I did some digging around, and it appears that requestIsValid()
is returning false in SteamAuth.php
every time. It looks like none of the GET parameters are being sent to the login page for some reason. I'm using the version that was just published a few days ago, v2.2.0
This problem only occurs on the remote project and not on my local project. I sign in on my local project by visiting localproject.app/login
get redirected to Steam, login successfully, and get redirected to localproject.app/panel
afterwards. The remote project loops the Steam login page over and over when attempting to sign in to Steam.
Running Laravel 5.5.9 via homestead.
Follow instructions to add to composer.json, run composer update (as lock file exists, so install doesn't add), check providers under config->app.php and the provider has not been automatically added.
Not a major issue (just added the line manually), but thought I'd let you know either way.
I implemented steam-login the way it is described in the documentation. But i get a wrong steamid put in my database.
Hello! I just have freshly installed Lumen 5.2 and latest version of your plugin.
I've got an error:
[2016-05-23 06:36:09] lumen.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: Fatal error: Class 'Config' not found in C:\Users\coder\Documents\PhpProjects\sdm\vendor\invisnik\laravel-steam-auth\src\SteamAuth.php:41
So, there is no Config class in global scope, you should to use Config facade instead - Illuminate\Support\Facades\Config.
In Laravel 5.4, the share
method was deleted and it is mentioned libraries should use singeleton
.
Docs:
https://laravel.com/docs/5.4/upgrade#upgrade-5.4.0
The
share
method has been removed from the container. This was a legacy method that has not been documented in several years. If you are using this method, you should begin using thesingleton
method instead:
$container->singleton('foo', function () {
return 'foo';
});
EDIT: I have submitted a PR (#44) to fix this.
I have tried all solution for this which is given in issues closed.But it gives me the same.I used laravel 5.1 with nginx server for this and I also tried it on apache server. But both gives the same result(return false, So i can't able to get user data.). $this->requestIsValid() is always returns false.
I have strictly in accordance with the guidelines on the github operation, the data table has been added.
The routing address and controller code are consistent with the examples on Github.
Specific code reference: https://stackoverflow.com/questions/47941005/laravel-steam-ouath-callback-null
View on website: https://steamhub.cn/auth/steam.
I've used dd () to respond to the data but return NULL, as I did with a new project, thanks for your help
My steam login dosn't work, redirect to steam and another all worked... but after login and click on steam "login" get this error by steam "Incredible credentials" any idea?
i use Laravel 5.5,
EDIT: i know now, this is a server side problem? i use php 7.2 debian jessie and plesk, and bcmath is installed.
First I like this package, it looks very nice.
I did everything as mentioned in the docs. But I always get False when validating the steam response. Due to the following error:
ErrorException: local.ERROR: ErrorException: file_get_contents(http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=5D3493723667BZ6963CDSD86E7D40E&steamids=76561198232252756): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden
in /var/www/laravel/vendor/invisnik/laravel-steam-auth/src/SteamAuth.php:148
Here's how my code looks like:
steam-auth config:
return [
'redirect_url' => '/auth/steam/return',
'api_key' => '2D3493123767BD6963CD6DD86E7D10S'; // env('STEAM_KEY', ''),
'https' => false
];
routes:
$router->any('/auth/steam/', [
'uses' => 'SteamAuthenticationController@redirect',
]);
$router->any('/auth/steam/return', [
'uses' => 'SteamAuthenticationController@return',
]);
SteamAuthenticationController:
<?php
use App\Containers\User\Models\User;
use App\Kernel\Controller\Abstracts\ApiController;
use Auth;
use Invisnik\LaravelSteamAuth\SteamAuth;
class SteamAuthenticationController extends ApiController
{
private $steam;
public function __construct(SteamAuth $steam)
{
$this->steam = $steam;
}
public function redirect()
{
// Go to Steam login page
return $this->steam->redirect();
}
public function return()
{
if ($this->steam->validate()) {
$info = $this->steam->getUserInfo();
if (!is_null($info)) {
dd($info);
// $user = User::where('steamid', $info->getSteamID64())->first();
//
// if (is_null($user)) {
//
// $user = User::create([
// 'username' => $info->getNick(),
// 'avatar' => $info->getProfilePictureFull(),
// 'steamid' => $info->getSteamID64()
// ]);
//
// }
//
// Auth::login($user, true);
}
}
dd('something went wrong!!');
}
}
With auth/steam it successfully redirect to the steam for sign in
when return back no values are stored in DB,
Using Laravel 5.5,
updated register controller for new incoming values also like username avatar and steamid + model also updated.
Although nothing stored in DB table is empty
Hey,
Im new to laravel and I'm really liking it but I keep having this error when using this package the user can login with not logout any idea why??
I have also watched this https://www.youtube.com/watch?v=rfHX-Hecu3k
and he does not seem to have the same issue I would give an error code but its not giving me one.
Any help would be greatly appreciated
FatalErrorException in ProviderRepository.php line 150:
Class 'Invisnik\LaravelSteamAuth\SteamServiceProvider' not found
Hello,
i am facing an issue, where i login into steam and then when i normally gets redirected to my page, i get redirected to steam without any error message.
I checked all issues before and i am sure that my "redirect_url" is the same as $steam->validate().
So basically "validate()" is returning false all the time.
Regards ReptoxX
Hello. How can i use Proxy for Auth?
I get the following errors:
Using a reverse proxy with nginx and cloudflare and I was getting a redirect loop to the steam login page. When actually doing a dd() I noticed the URL was considerable smaller than usual and actually stated an openid error:
mydomain/login?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=error&openid.error=realm+and+return_to+do+not+match
I managed to fix this by simply ignoring the check on line 131
'openid.realm' => 'https' . '://' . $this->request->server('HTTP_HOST'),
I know this isn't a very good fix but it works for my situation. I'm just posting here incase any others have an issue. One option might be to build ssl into the config and instead of getting it from
$https = $this->request->server('HTTPS');
get it from the config instead
Hi, can you help me with this error?
After log in in steam, i'm redirected to
/login?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=id_res&openid.op_endpoint=https%3A%2F%2Fsteamcommunity.com%2Fopenid%2Flogin&openid.claimed_id=http%3A%2F%2Fsteamcommunity.com%2Fopenid%2Fid%2F76561198036284814&openid.identity=http%3A%2F%2Fsteamcommunity.com%2Fopenid%2Fid%2F76561198036284814&openid.return_to=https%3A%2F%2Fcsdrop.pro%2Flogin&openid.response_nonce=2017-05-15T17%3A24%3A15Zd7RzSF%2BMsGZndfs3yV7VM4jn7ew%3D&openid.assoc_handle=1234567890&openid.signed=signed%2Cop_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2Cassoc_handle&openid.sig=%2BXVeEXu78RsV115KU62BGLmWdzI%3D
and get this error:
http://prntscr.com/f85tc9
Is the snippet provided in the readme supposed to work ?
Entering a login loop with this snippet, and can't get any data in the $steam object after login on the steam webpage.
A clear documentation on how all this work wouldn't be too much ..
Hey there! , for some reason the time that takes to login to my site is much longer then other sites ,
it takes sometimes around 10 seconds while other sites do it in 1 or sometimes even less
Can you update this repo or tell me if I'm using it wrong?
Wasn't able to get the logout function working with the README's:
Route::post('logout', 'Auth\LoginController@logout')->name('logout');
This was done on a fresh install of Laravel.
I was able to get it to work using a get request instead.
Route::get('logout', 'Auth\LoginController@logout')->name('logout');
I dont know why, but for whatever reason i get a login request from steam with a double encoded URL.
Opened site at localhost. Config:
`<?php
return [
/*
* Redirect URL after login
*/
'redirect_url' => '/login',
/*
* API Key (http://steamcommunity.com/dev/apikey)
*/
'api_key' => 'A6B12375521B6D6B5066EFFB2E79F02C',
/*
* Is using https?
*/
'https' => false
];`
Error screenshot: https://gyazo.com/0c0e987585b6566fed834505382ea468
Hello, i would love to ask how can i setup this in Laravel 5.4 i am having problem with routes. And with Auth forled.
As this code use guzzlehttp, which has a bug with socks5 proxy.
I think use curl_init directly may be greater.
Hello,
Suddenly I am unable to auth through steam on my application anymore. I get this error:
Client error: GET http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=C63F514B1FE910EC7726D80971F60xxx&steamids=76561197987844xxx resulted in a
429 Too Many Requests response: <html> <head> <title>429 Too Many Requests</title> </head> <body> <h1>Too Many Requests</h1> </body> </html>
I think that Steam has blocked the IP address of my VPS and it's been almost 1 day since I am unable to log in and yet not working. Can this block be permanent?
Should I try to place a delay to the GET request? If so, how can I do this?
Hi,
While trying to install invisnik/laravel-steam-auth via composer it will throw a dependency error if using latest laravel.
Can you please add the newer version to composer.json? (assuming laravel 5.1 is not breaking the service)
Composer output
Problem 1
- Installation request for invisnik/laravel-steam-auth dev-master -> satisfiable by invisnik/laravel-steam-auth[dev-master].
- Conclusion: remove laravel/framework v5.1.1
- Conclusion: don't install laravel/framework v5.1.1
- invisnik/laravel-steam-auth dev-master requires illuminate/support 5.0.x -> satisfiable by illuminate/support[5.0.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.33, v5.0.4].
- don't install illuminate/support 5.0.x-dev|don't install laravel/framework v5.1.1
- don't install illuminate/support v5.0.0|don't install laravel/framework v5.1.1
- don't install illuminate/support v5.0.22|don't install laravel/framework v5.1.1
- don't install illuminate/support v5.0.25|don't install laravel/framework v5.1.1
- don't install illuminate/support v5.0.26|don't install laravel/framework v5.1.1
- don't install illuminate/support v5.0.28|don't install laravel/framework v5.1.1
- don't install illuminate/support v5.0.33|don't install laravel/framework v5.1.1
- don't install illuminate/support v5.0.4|don't install laravel/framework v5.1.1
- Installation request for laravel/framework == 5.1.1.0 -> satisfiable by laravel/framework[v5.1.1].
Thanks!
Rodrigo
Hello ,
I recently decided to update my project laravel 5.2 to version 5.3
However everything worked except this package
I have an error
Object of class Invisnik\LaravelSteamAuth\SteamInfo could not be converted to string
http://image.prntscr.com/image/22865767ec6040df8297df98772eeb24.jpeg
I can provide other info if you wish
cordially
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.