With just detect magic and non-epic Spellcraft, the DM is correct. Detect magic can, at best, tell you what school of magic is involved in the making of an item—but curses and traps can be made from any school of magic, so that doesn’t really help you. This is incorrect—Yopi Lapi’s answer reports a way to identify items with just detect magic and Spellcraft.
Technically, a Spellcraft check of 50 + the item’s caster level functions as identify, but that’s not something you’re likely to be able to pull off. (Remember, natural-20s are not automatic successes on skill checks.)
There is an item in Magic Item Compendium, the artificer’s monocle, which basically allows you to spend an extra minute studying an item with detect magic (or the artificer knowledge abiilty) and get the effects of identify instead, without needing identify’s costly component or any Spellcraft check. At 1,500 gp, it’s a pretty worthwhile item.
Also, cloistered clerics get identify as a 1st-level divine spell—and as a divine spell, identify doesn’t require arcane material components. Since a single level of cloistered cleric can be very useful to a lot of characters, but the spellcasting of a 1st-level cleric isn’t all that impressive (once you are a few levels above that yourself, anyway), it’s common for characters who dip cloistered cleric for the domains to fill their spell slots with identify, just because it’s convenient.
Finally, note that there is an awful, terrible, no-good rule giving identify only a 1% chance to correctly recognize cursed items. I would, quite frankly, have a serious problem with a DM who enforced that rule—I despise the entire “identify minigame,” and cursed items in general, and think this serves no purpose but to troll players, which is something no DM should ever do. I hadn’t even been aware of this line—it is not in any place you would expect to find it, and frankly I kind of wonder if it isn’t superseded by the rules of identify itself that says it does recognize an item, with no stated difficulty with cursed items—but since HeyICanChan pointed it out, in the interest of completeness, I feel compelled to include it.