Faits :
A.
Par jugement du 23 octobre 2015, le Tribunal correctionnel de l'arrondissement de La Côte a reconnu X._ coupable d'infraction grave et d'infraction à la LStup (art. 19 al. 1 let. b, c et d et 19 al. 2 let. a LStup); il a été condamné à une peine privative de liberté de treize mois, avec sursis pendant trois ans, ainsi qu'au paiement d'une amende de 700 fr., une peine privative de liberté de substitution de sept jours étant prévue au cas où l'amende ne serait pas payée.
Le 23 décembre 2015, la Cour d'appel pénale du Tribunal cantonal vaudois a déclaré l'appel interjeté par X._ irrecevable. Dans un arrêt du 5 mai 2017 (6B_294/2016), le Tribunal fédéral a annulé la décision de la Cour d'appel pénale et lui a renvoyé la cause.
B.
Par jugement du 5 septembre 2017, la Cour d'appel pénale a rejeté l'appel de X._. Elle s'est fondée en substance sur les faits suivants.
A Genève, à la fin de l'année 2012, X._ a vendu dix grammes de cocaïne et a remis du produit de coupage à A._, déféré séparément, pour un montant de 500 francs. Une partie de la cocaïne et du produit de coupage a été retrouvée au domicile de A._.
A Morges, le 10 mai 2013, vers 19h00, X._ a vendu mille pilules d'ecstasy pour la somme de 6000 fr. à A._, qui agissait pour le compte de B._, également déféré séparément. Six cent quarante-neuf pilules ont été retrouvées au domicile de B._. Un échantillon de cette drogue a été analysé et a révélé une quantité de 0.5 gramme de MDMA pure pour trois pilules, soit une quantité totale de 166.6 grammes de MDMA pure pour mille pilules d'ecstasy.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre ce jugement, concluant à sa libération de l'ensemble des chefs de prévention retenus contre lui, subsidiairement à ce que le jugement attaqué soit annulé et la cause renvoyée à l'autorité précédente pour nouvelle décision au sens des considérants.
Considérant en droit :
1.
Le recourant se plaint de la violation de son droit d'être entendu au motif qu'il n'a pas pu intervenir dans le procès de A._, qui faisait l'objet d'une procédure séparée. Il n'a en outre pas été en mesure de se défendre convenablement dès lors qu'un défenseur obligatoire ne lui a été désigné qu'à compter du 31 mars 2015. Enfin, l'autorité précédente s'était notamment fondée sur des informations tirées du site Internet Wikipedia sans lui permettre de se déterminer préalablement sur leur contenu.
1.1. Le Tribunal fédéral n'entre pas en matière lorsque la partie recourante invoque pour la première fois la violation d'une garantie de procédure (par exemple: récusation, droit d'être entendu) qu'elle aurait pu et dû invoquer devant l'autorité précédente (ATF 142 I 155 consid. 4.4.6 p. 158 s.).
En l'espèce, le recourant n'établit pas s'être plaint, devant la cour cantonale, de la séparation des procédures et de la désignation prétendument tardive du défenseur d'office. Il ne soutient pas, du reste, que l'autorité précédente aurait commis un déni de justice en n'examinant pas ces questions. Invoqués pour la première fois devant le Tribunal fédéral alors qu'ils auraient pu l'être devant l'autorité précédente, ces griefs sont irrecevables. Il en va différemment du grief relatif à la référence à un site Internet dans la motivation du jugement de la cour cantonale, qui résulte dudit jugement. Il y a lieu de l'examiner ci-après.
1.2. Le droit d'être entendu consacré notamment par l'art. 107 CPP implique la faculté de s'exprimer sur les preuves propres à influencer le jugement. Le Tribunal fédéral a ainsi jugé que lorsqu'une juridiction d'appel entend fonder sa décision sur des preuves nouvelles, elle doit en informer les parties et leur donner l'occasion de s'exprimer à leur sujet (ATF 124 II 132 consid 2b p. 137 et les références citées; arrêt 6B_986/2016 du 20 septembre 2017 consid. 1.1 destiné à la publication). Conformément à l'art. 139 al. 2 CPP, il n'y a pas lieu d'administrer des preuves sur des faits non pertinents, notoires, connus de l'autorité ou déjà suffisamment prouvés (arrêt 6B_986/2016 précité consid. 1.1 destiné à la publication). Les faits notoires, qu'il n'est pas nécessaire d'alléguer ni de prouver, sont ceux dont l'existence est certaine au point d'emporter la conviction du juge, qu'il s'agisse de faits connus de manière générale du public (" allgemeine notorische Tatsachen ") ou seulement du juge (" amtskundige oder gerichtskundige Tatsachen "). Pour être notoire, un renseignement ne doit pas être constamment présent à l'esprit; il suffit qu'il puisse être contrôlé par des publications accessibles à chacun. Sous cet angle, en ce qui concerne les publications sur Internet, seules les informations bénéficiant d'une empreinte officielle (par ex: Office fédéral de la statistique, inscriptions au registre du commerce, cours de change, horaire de train des CFF etc.) peuvent être considérées comme notoires au sens de l'art. 139 al. 2 CPP, car facilement accessibles et provenant de sources non controversées (arrêt 6B_986/2016 précité consid. 1.1.1 et 1.2).
Le droit d'être entendu est une garantie constitutionnelle de caractère formel, dont la violation entraîne en principe l'annulation de la décision attaquée, indépendamment des chances de succès du recours sur le fond. Le droit d'être entendu n'est toutefois pas une fin en soi; il constitue un moyen d'éviter qu'une procédure judiciaire ne débouche sur un jugement vicié en raison de la violation du droit des parties de participer à la procédure, notamment à l'administration des preuves. Lorsqu'on ne voit pas quelle influence la violation du droit d'être entendu a pu avoir sur la procédure, il n'y a pas lieu d'annuler la décision attaquée (arrêt 6B_986/2016 précité consid. 1.4.1 et les références citées).
1.3. La cour cantonale a retenu que le recourant participait au même genre de soirées que A._, soit des soirées " hardcores " durant lesquelles la consommation d'ecstasy était répandue; sur ce dernier point, elle s'est référée à une page du site Wikipedia traitant de la " techno hardcore ".
On peut se demander si le fait que la consommation d'ecstasy soit courante lors de soirées de techno hardcore ne constitue pas déjà un fait notoire, indépendamment de la publication Internet qui l'indique, de sorte qu'il n'aurait pas besoin d'être administré conformément à l'art. 107 CPP. Quoi qu'il en soit, le recourant ne prétend pas que ce fait serait inexact. Il ne donne pas la moindre indication sur la manière dont il se serait déterminé sur les informations de Wikipedia si l'occasion lui en avait été donnée. Ce faisant, il ne démontre pas, conformément aux exigences de l'art. 106 al. 2 LTF, que la violation a eu une incidence sur la procédure qui justifierait d'annuler la décision. En tout état, on comprend de la motivation de la cour cantonale que cet élément n'est pas déterminant, d'autres faits plus probants permettant déjà d'emporter sa conviction (cf. consid. 2 infra). Le grief sera en conséquence écarté, dans la mesure où il est recevable.
2.
Le recourant invoque la violation du principe de présomption d'innocence en lien avec l'appréciation des preuves et la constatation des faits. Il soutient que le dossier ne contenait pas suffisamment d'éléments pour se convaincre de sa culpabilité. La seule mise en cause de A._, qui l'a désigné comme étant son vendeur pour les stupéfiants incriminés, serait insuffisante à cet égard.
2.1. Le Tribunal fédéral est lié par les constatations de fait de la décision entreprise (art. 105 al. 1 LTF), à moins que celles-ci n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. La notion d'arbitraire a été rappelée récemment dans l'arrêt publié aux ATF 142 II 369, auquel on peut se référer. En bref, une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable, et cela non seulement dans sa motivation mais aussi dans son résultat (ATF 142 II 369 consid. 4.3 p. 380). En matière d'appréciation des preuves et d'établissement des faits, il n'y a arbitraire que lorsque l'autorité ne prend pas en compte, sans aucune raison sérieuse, un élément de preuve propre à modifier la décision, lorsqu'elle se trompe manifestement sur son sens et sa portée, ou encore lorsque, en se fondant sur les éléments recueillis, elle en tire des constatations insoutenables (ATF 140 III 264 consid. 2.3 p. 266 et les références citées). Le Tribunal fédéral n'entre en matière sur les moyens fondés sur la violation de droits fondamentaux, dont l'interdiction de l'arbitraire, que s'ils ont été invoqués et motivés de manière précise (art. 106 al. 2 LTF; ATF 142 III 364 consid. 2.4 p. 368). Les critiques de nature appellatoire sont irrecevables (ATF 142 III 364 consid. 2.4 p. 368 et les références citées). Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence à la présomption d'innocence (art. 6 par. 2 CEDH, 32 al. 1 Cst. et 10 CPP), le principe "in dubio pro reo" n'a pas de portée plus large que l'interdiction de l'arbitraire (ATF 138 V 74 consid. 7 p. 82).
2.2. La motivation du recourant est appellatoire dans une large mesure, par exemple lorsqu'il fait valoir qu'il " n'est pas impossible non plus de penser que A._ ait accusé à tort le recourant par pure vengeance ou par opportunisme " sans présenter le moindre élément en ce sens, ou encore lorsqu'il soutient qu'il n'a pas le profil d'une personne s'adonnant au trafic de stupéfiants. Il se borne à répéter que A._ aurait pu mentir pour protéger l'identité d'un tiers inconnu ou de son fournisseur lyonnais, mais il n'explique pas en quoi il était arbitraire, de la part de la cour cantonale, d'écarter cette possibilité au motif que A._ mettait également en cause ce fournisseur (qui n'a pas pu être identifié) pour des transactions distinctes de pilules d'ecstasy. De même suggère-t-il que A._ aurait pu disposer de son numéro de téléphone pour d'autres raisons que la vente de drogue, sans toutefois fournir dites autres raisons. Se limitant à proposer son appréciation des moyens de preuve, il ne démontre pas le caractère insoutenable de celle de l'autorité précédente. Aussi son grief apparaît-il irrecevable dans cette mesure.
2.3. Pour le surplus, le recourant ne convainc pas lorsqu'il affirme que les déclarations de A._ ne permettent pas de tisser un lien objectif entre son comportement présumé et les infractions retenues contre lui. En effet, les déclarations de A._ le désignent précisément comme étant celui qui lui a vendu mille pilules d'ecstasy et dix grammes de cocaïne.
La cour cantonale a considéré que A._ se mettait en cause par ses déclarations, ce qui le rendait d'autant plus crédible. Il est vrai, comme le souligne le recourant, que lorsque A._ a fait des aveux, les résultats de la perquisition opérée à son domicile l'incriminaient déjà largement. Toutefois, il n'avait rien à gagner à mettre en cause le recourant pour deux transactions et son fournisseur lyonnais pour les autres, si ce fournisseur était en réalité partie à l'ensemble des transactions.
En outre, comme l'a constaté la cour cantonale, il est faux de prétendre que lors du procès de A._ il n'a plus été question que du fournisseur lyonnais, puisque l'intéressé a admis à cette occasion les faits résultant de l'acte d'accusation, dont notamment les transactions impliquant le recourant.
Il est par ailleurs sans importance que B._ ait indiqué qu'il ne connaissait pas le fournisseur de A._, ou encore que B._ et A._ n'aient pas fourni les mêmes indications sur le prix de la pilule et l'origine de l'argent qui ont servi à acheter la drogue, leurs déclarations concordant largement pour le reste (cf. jugement du tribunal correctionnel, p. 10).
Enfin, la motivation du recourant est à la limite de la mauvaise foi lorsqu'il se plaint de n'avoir été entendu en tout et pour tout que vingt minutes au cours de la procédure, alors qu'il a sollicité des dispenses de comparution personnelle lors de chaque audience de jugement.
2.4. La cour cantonale pouvait ainsi retenir que la mise en cause de A._, qui n'avait pas de raison de mentir, était crédible. Cette mise en cause trouvait en outre un ancrage dans le réel. En effet, A._ avait non seulement nommé le recourant mais également fourni son numéro de portable, indication qui s'était révélée exacte. A._ et le recourant ont tous deux déclaré s'être rencontrés dans des soirées au début de l'année 2013, et A._ a affirmé avoir vendu la cocaïne fournie par le recourant " à peu près à la même époque " que celle où il a vendu le speed, soit à fin 2012. Les périodes approximatives indiquées coïncidaient donc. De plus, l'adresse donnée par A._ concernant le recourant à Genève, si elle ne correspondait pas à son domicile, avait bien été donnée par celui-ci pour souscrire un abonnement mobile. Les indications de A._ susceptibles d'être vérifiées confirmaient donc ses déclarations.
Fondée sur ces éléments, la cour cantonale pouvait sans arbitraire retenir que le recourant avait vendu les stupéfiants incriminés à A._. Le grief est rejeté dans la mesure de sa recevabilité.
3.
Le recourant se plaint d'une violation du principe de l'instruction (art. 6 CPP), estimant que les mesures d'instruction nécessaires n'ont pas été prises.
Pour autant, le recourant n'a requis aucun acte d'instruction au cours de la procédure, sous réserve de l'audition de son père qui lui a été accordée. Quoi qu'il en soit, dès lors que le recourant soutient que le dossier ne contient aucune preuve matérielle à charge de sorte que les circonstances objectives auraient dû susciter des doutes raisonnables quant à sa culpabilité, son grief se confond avec celui tiré de la violation de la présomption d'innocence, écarté selon ce qui précède. Il n'y a pas lieu d'y revenir.
4.
Le recours doit ainsi être rejeté dans la mesure où il est recevable. Il était d'emblée dénué de chances de succès. L'assistance judiciaire doit être refusée (art. 64 al. 1 LTF). Le recourant supporte les frais de la cause, qui seront fixés en tenant compte de sa situation économique, qui n'apparaît pas favorable (art. 65 al. 2 et 66 al. 1 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaireest rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 20 décembre 2017
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Musy