Faits :
A.
Le 8 septembre 2015, le Tribunal pénal de l'arrondissement de la Gruyère a reconnu X._ coupable d'infractions aux art. 19 al. 2 let. a et 19a LStup (RS 812.121), ainsi que d'infractions à la LAVS et à la LAA. Il l'a condamné à une peine privative de liberté de 4 ans ainsi qu'au paiement d'une amende de 200 francs. Il l'a en outre astreint au paiement d'une créance compensatrice de 4'000 francs.
B.
Par arrêt du 23 août 2016, la Cour d'appel pénal du Tribunal cantonal fribourgeois a rejeté dans la mesure de sa recevabilité l'appel déposé par X._ contre ce jugement, qu'elle a confirmé.
Les faits à l'origine de la condamnation sont en substance les suivants.
X._ a organisé l'importation, aux fins de vente, de 1488,97 grammes d'héroïne représentant 495,76 grammes d'héroïne pure en provenance du Kosovo. Le 9 octobre 2012, cette marchandise, cachée dans le véhicule conduit par A._, a été interceptée à la frontière serbe.
X._ a par ailleurs été reconnu coupable d'avoir, entre l'hiver 2010 et septembre 2012, acquis notamment pour la revente, entreposé, préparé, consommé, vendu ou encore offert une quantité totale de 272 grammes de cocaïne, de plus d'un kilo de marijuana ainsi que 230 branches (7 plants) de chanvre et 20 kilos de têtes de chanvre.
Enfin, entre mars 2011 et le 16 octobre 2012, il a travaillé pour différentes personnes sans s'acquitter de ses obligations envers les assurances sociales.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre l'arrêt de la Cour d'appel pénal. Il conclut, avec suite de dépens, à son acquittement de tous les chefs d'accusation en lien avec la participation au trafic d'héroïne qui lui est reprochée et au renvoi de la cause à la cour cantonale pour nouvelle fixation de la peine ainsi que de la créance compensatrice et des frais pénaux, réservant par ailleurs son droit à une indemnité au sens de l'<ref-law>.

Considérant en droit :
1.
Le recourant cherche à remettre en question l'appréciation des preuves faite par la cour cantonale.
1.1. Le Tribunal fédéral n'est pas une autorité d'appel auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (<ref-law>), à 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, à savoir pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. 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 (<ref-ruling> consid. 2.3 p. 266 et les références citées).
Le grief d'arbitraire doit être invoqué et motivé de manière précise (<ref-law>). Le recourant doit exposer, de manière détaillée et pièces à l'appui, que les faits retenus l'ont été d'une manière absolument inadmissible, et non seulement discutable ou critiquable. Il ne saurait se borner à plaider à nouveau sa cause, contester les faits retenus ou rediscuter la manière dont ils ont été établis comme s'il s'adressait à une juridiction d'appel (<ref-ruling> consid. 3 p. 352; <ref-ruling>). Le Tribunal fédéral n'entre pas en matière sur les critiques de nature appellatoire (<ref-ruling> consid. 2.4 p. 368).
1.2. La cour cantonale a considéré que les déclarations de A._ mettant le recourant en cause étaient crédibles au motif que ses accusations étaient mesurées, qu'elle ne cherchait pas à charger le recourant, ce qu'elle n'avait au demeurant aucune raison de faire. La cour cantonale a par ailleurs relevé le comportement du recourant qui, immédiatement après son retour en Suisse, s'est inquiété de l'absence de A._, qui avait été arrêtée à la frontière serbe, et s'est mis activement à la recherche de celle-ci ainsi que de l'héroïne qu'elle transportait. Le recourant se contente d'opposer sa propre version des faits à celle retenue par la cour cantonale sans montrer en quoi cette dernière serait arbitraire. L'argumentation du recourant est sur ce point purement appellatoire et partant irrecevable.
2.
Le recourant reproche à la cour cantonale d'avoir refusé de contacter les autorités diplomatiques albanaises avant d'écarter son affirmation selon laquelle il aurait agi sur mandat d'une ONG luttant contre le crime organisé dans les Balkans, refus qui violerait son droit à un procès équitable.
2.1. Le droit à un procès équitable garanti par l'art. 6 ch. 1 CEDH, également consacré par l'art. 29 al. 1 Cst., comporte notamment le droit d'être entendu, qui inclut le droit à l'administration de preuves quant aux faits de nature à influer sur le sort de la décision à rendre (<ref-ruling> consid. 3.3. p. 64; <ref-ruling> consid. 3.4 p. 102).
Aux termes de l'<ref-law>, la juridiction d'appel détermine les compléments de preuve à administrer et les compléments à apporter au dossier. Conformément à l'<ref-law>, applicable de manière générale à toutes les autorités pénales (cf. <ref-law>), 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. Cette disposition codifie, pour la procédure pénale, la règle jurisprudentielle déduite de l'art. 29 al. 2 Cst. en matière d'appréciation anticipée des preuves (arrêt 6B_676/2015 du 24 avril 2017 consid. 2.2 et l'arrêt cité). Ainsi, les parties ont un droit à l'administration des preuves valablement offertes, à moins que le fait à prouver soit dépourvu de pertinence ou que la preuve apparaisse manifestement inapte à révéler la vérité. Le magistrat peut dès lors renoncer à l'administration de certaines preuves et le refus d'instruire ne viole le droit d'être entendu des parties que si l'appréciation anticipée de la pertinence du moyen de preuve offert, à laquelle le juge a procédé, est entachée d'arbitraire (<ref-ruling> consid. 3.3 p. 64).
2.2. S'agissant de la prétendue appartenance du recourant à l'agence albanaise " B._ ", la cour cantonale a mentionné que le Ministère public avait produit un échange d'e-mails entre la police suisse et le service albanais compétent en matière d'investigation secrète. Il en ressort d'une part que l'agence en question n'est pas autorisée à faire des investigations sous couverture et d'autre part qu'aucune investigation secrète n'avait été annoncée aux autorités suisses en rapport avec les faits à l'origine de la procédure. Elle en a conclu que les autorités albanaises compétentes s'étaient déjà exprimées sur la question et qu'il n'y avait pas lieu de donner suite à la requête du recourant tendant à l'interpellation de l'ambassade d'Albanie en Suisse.
Le recourant se prévaut essentiellement d'une prétendue corruption qu'il qualifie d'endémique parmi les autorités dans la région des Balkans pour soutenir qu'une investigation auprès de l'ambassade serait plus convaincante que le policier de base consulté, selon lui, par la police fribourgeoise. Or, il ressort des constatations du jugement attaqué, qui lient le Tribunal fédéral (<ref-law>), que l'échange d'e-mails a eu lieu entre la police et le service albanais compétent en matière d'investigation secrète. Il s'agit à l'évidence d'un service qualifié pour fournir les renseignements sollicités et on ne voit pas en quoi l'ambassade disposerait d'informations plus fiables. Par ailleurs, l'argumentation du recourant tirée d'une prétendue corruption des autorités ne lui est d'aucun secours. En effet, même si on voulait partir de cette hypothèse, on ne voit pas pourquoi les autorités diplomatiques jouiraient d'une crédibilité supérieure à celle accordée aux autorités policières.
Enfin, la cour cantonale a relevé avec raison la tardiveté avec laquelle le recourant a affirmé, quelques jours seulement avant l'audience d'appel, avoir agi en tant qu'agent infiltré. Les motifs par lesquels il cherche à expliquer son silence, à savoir le fait que les prisons suisses abritent nombre de détenus susceptibles de servir de source d'information pour un agent infiltré et qu'en apparaissant comme un délinquant primaire ayant un lien des plus ténus avec le trafic d'héroïne il pouvait espérer une condamnation modérée avec sursis, ne convainquent pas. La cour cantonale note à juste titre que si une investigation sous couverture avait effectivement été menée, les autorités suisses en auraient été informées car toute infiltration policière doit être annoncée. Par ailleurs, il est très peu vraisemblable que le recourant ait attendu près d'une année après sa condamnation par le tribunal d'arrondissement à une peine privative de liberté de 4 ans pour faire valoir cet argument.
Dans ces circonstances, la cour cantonale pouvait, sans arbitraire, considérer que le moyen de preuve sollicité par le recourant n'était pas propre à modifier l'état de fait retenu, de sorte que son refus de l'administrer ne viole pas le droit fédéral.
3.
Le recourant conteste en outre la peine qui lui a été infligée ainsi que la créance de l'Etat et les frais pénaux. Son argumentation sur ce point repose entièrement sur la prémisse que son implication dans le trafic d'héroïne n'a pas été établie. Elle est donc irrecevable. Le recourant ne formule aucun grief recevable pour le surplus.
4.
Il résulte de ce qui précède que le recours doit être rejeté dans la mesure où il est recevable. Le recourant qui succombe supportera les frais judiciaires (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 3'000 fr., sont mis à la charge du recourant.
3.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénal du Tribunal cantonal fribourgeois.
Lausanne, le 7 août 2017
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Paquier-Boinay